Search code examples
ibm-mobilefirstworklight-adapters

Http Adapter Invocation failure?


The Control is going to failure function when I'm trying to invoke Http Adapter.Here My adapter is running fine and I'm getting data also.

Here is My html code

<html>
<head>
<meta charset="UTF-8">
<title>IIB_WL_App</title>
<meta name="viewport" content="width=device-width, initial-scale=1.0,maximum-scale=1.0, minimum-scale=1.0, user-scalable=0">
<link rel="shortcut icon" href="images/favicon.png">
<link rel="apple-touch-icon" href="images/apple-touch-icon.png">
<link rel="stylesheet" href="css/IIB_WL_App.css">
<script>window.$ = window.jQuery = WLJQ;</script>
</head>
<body id="content" style="display: none;">
<form name="f1">
Enter Employee ID :<input type="text" id="EmpId">
<br>
<input type="submit" value="GetDetails" onclick="GetDetails()">
</form>
<!--application UI goes here-->
<script src="js/initOptions.js"></script>
<script src="js/IIB_WL_App.js"></script>
<script src="js/messages.js"></script>
</body>
</html>

Here is My .js code For getting details

function GetDetails(){
//alert("Function Called");
var id=f1.EmpId.value;
//var id=document.getElementById("EmpId").value();
alert(id);
var invocationData = {
    adapter : 'IIB_WL_Adapter',
    procedure : 'getData',
    parameters : [id]
};
var options={
        onSuccess : getDataSuccess,
        onFailure : getDataFailure, 
};
WL.Client.invokeProcedure(invocationData,options);

};
function getDataSuccess(result) {
//WL.Logger.debug("Retrieve success" +  JSON.stringify(result));

alert("Success");
var httpStatusCode = result.status;
alert(httpStatusCode);

}
function getDataFailure(result) {
//WL.Logger.debug("Retrieve success" +  JSON.stringify(result));
alert("Failure");
   var httpStatusCode = result.status;
   alert(httpStatusCode);    
}

And I want to display that data in a list view

Here is MY adapter.xml

<?xml version="1.0" encoding="UTF-8"?>
<!-- Licensed Materials - Property of IBM 5725-G92 (C) Copyright IBM Corp. 
2011, 2013. All Rights Reserved. US Government Users Restricted Rights - 
Use, duplication or disclosure restricted by GSA ADP Schedule Contract with 
IBM Corp. -->
<wl:adapter name="IIB_WL_Adapter" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:wl="http://www.worklight.com/integration" xmlns:http="http://www.worklight.com/integration/http">

<displayName>IIB_WL_Adapter</displayName>
<description>IIB_WL_Adapter</description>
<connectivity>
    <connectionPolicy xsi:type="http:HTTPConnectionPolicyType">
        <protocol>http</protocol>
        <domain>172.17.14.228</domain>
        <port>7080</port>
        <!-- Following properties used by adapter's key manager for choosing specific 
            certificate from key store <sslCertificateAlias>       </sslCertificateAlias> <sslCertificatePassword></sslCertificatePassword> -->
    </connectionPolicy>
    <loadConstraints maxConcurrentConnectionsPerNode="2" />
</connectivity>

<procedure name="getData" />

Here is My adpater-impl.js

function getData(interest) {
//path = getPath(interest);

var input = {
    method : 'get',  
    path : '/DBRetrive',
    returnedContentType : 'xml',
    parameters : {'id' : interest}  
};


return WL.Server.invokeHttp(input);

}


Solution

  • I got the solution for this problem. The problem is in my Html page i.e instead of using this.

    <input type="submit" value="GetDetails" onclick="GetDetails()">
    

    use the following tag with button type then its working.

    <input type="button" value="GetDetails" onclick="return GetDetails()">
    

    And for displaying the data I added some code in .js file

    function GetDetails(){
    var id=f1.EmpId.value;
    alert(id);
    var invocationData = {
        adapter : 'IIB_WL_Adapter',
        procedure : 'getData',
        parameters : [id]
    };
    var options={
            onSuccess : getDataSuccess,
            onFailure : getDataFailure, 
    };
    WL.Client.invokeProcedure(invocationData,options);
    
    };
    function getDataSuccess(result) {
       display(result.invocationResult.Employee.Data);
    }
    function getDataFailure(result) {
       alert(JSON.stringify(result));
       alert(result.errorMsg);
       var httpStatusCode = result.status;
    }
    function display(items){
    
    var ul=$("#itemList");
    ul=$("#itemList").html("&nbsp");
    var li=$('<li/>').html("Id:"+items.ID);
    li.append($('<li/>').html("Name:"+items.NAME));
    li.append($('<li/>').html("Age:"+items.AGE));
    ul.append(li);
    }