madireddy
madireddy

Reputation: 107

Excel js, unable to make rest call

We are developing a excel plugin using Excel JS. The server code written in java and deployed in wildfy server.

Through excel plugin I'm unable to make the rest call to retrieve the user data. The aim is to perform login operation and retrieve the excel byte format stored at server and display in excel.

Any suggestions? Following is sample code which we tried so-far.

index.html

<body class="ms-font-m ms-welcome">
<div id="content-header">
    <div class="padding">
        <h1>Welcome</h1>
    </div>
</div>
<div id="content-main">
    <button id="ping-server3" onclick="pingServer2()">Ping server2</button>
    <p id="demo"></p>
    <p id="demo1"></p>
    <button id="ping-server">Ping server</button>
    <p></p> 
    <div class="padding">
        <form>  
        <div class="container">
        <label for="uname"><b>Username</b></label>
        <input id="uname" type="text" placeholder="Enter Username" 
             name="uname" required>

        <label for="psw"><b>Password</b></label>
        <input type="password" placeholder="Enter Password" name="psw" 
             required>

        <button id="login-button" onclick="pingServer2()">Login</button>
        </div>
        <div class="container" style="background-color:#f1f1f1">
            <span class="psw"><a href="#">Need password help?</a></span>
        </div>
        </form>
    </div>
</div>

<script type="text/javascript" src="node_modules/core-js/client/core.js"> 
</script>
<script type="text/javascript" src="node_modules/jquery/dist/jquery.js"> 
</script>
<script type="text/javascript" src="node_modules/office-ui-fabric- 
       js/dist/js/fabric.js"></script>
<script type="text/javascript" src="app.js" ></script>
 <script type="text/javascript" src="utility.js" ></script>
</body>

app.js

(function () { Office.initialize = function (reason) { $(document).ready(function () {

      if (!Office.context.requirements.isSetSupported('ExcelApi', 1.7)) {
        alert("ERROR");
        console.log('Sorry. The tutorial add-in uses Excel.js APIs that are 
 not available in your version of Office.');
      }
      $('#login-button').click(createTable);
    });
  };


  function createTable() {
      axios({
        method: 'post',
        url: 'http://localhost:8183/x/operation.do?&operationId=LOGIN_USER',
        data: {emailAddress : '[email protected],password : '123@asdA'}
    })
    .then(response => {
        $('#demo').innerHTML = response.data; 
        content=response.data.uiUser.createdBy;
        $('#demo1').innerHTML = content;
    })
    .catch(error => {
        $('#demo').innerHTML = response.status;
    });

    Excel.run(function (context) {

      const currentWorksheet = 
      context.workbook.worksheets.getActiveWorksheet();
      const expensesTable = currentWorksheet.tables.add("A1:D1", true 
     /*hasHeaders*/);
      expensesTable.name = "ExpensesTable";

      expensesTable.getHeaderRowRange().values = [["Date", "Merchant", 
        "Category", "Amount"]];

      expensesTable.rows.add(null /*add at the end*/, [["1/1/2017", "The 
   Phone Company", "Communications", "120"], ["1/2/2017", "Northwind 
    Electric Cars", "Transportation", "142.33"], ["1/5/2017", "Best For You 
    Organics Company", "Groceries", "27.9"], ["1/10/2017", "Coho Vineyard", 
     "Restaurant", "33"], ["1/11/2017", "Bellows College", "Education", 
     "350.1"], ["1/15/2017", "Trey Research", "Other", "135"], ["1/15/2017", 
     "Best For You Organics Company", "Groceries", "97.88"]]);

      expensesTable.columns.getItemAt(3).getRange().numberFormat = 
     [['€#,##0.00']];
      expensesTable.getRange().format.autofitColumns();
      expensesTable.getRange().format.autofitRows();

      return context.sync();
    }).catch(function (error) {
      console.log("Error: " + error);
      if (error instanceof OfficeExtension.Error) {
        console.log("Debug info: " + JSON.stringify(error.debugInfo));
      }
    });
  }
})

Upvotes: 0

Views: 194

Answers (1)

ATrogolo
ATrogolo

Reputation: 56

the URL you're trying to POST is in http format:

http://localhost:8183/x/operation.do?&operationId=LOGIN_USER

The Excel AddIn is deployed using https. If you inspect the AddIn, using the F12 Debugger Tools, you will see a Mixed Content error.

Mixed Content: The page at 'https://Your_AddIn_Url' was loaded over HTTPS, but requested an insecure resource 'http://localhost:8183/x/operation.do?&operationId=LOGIN_USER'. This request has been blocked; the content must be served over HTTPS.

Using an https endpoint should solve your issue.

Upvotes: 2

Related Questions