如何在适用于MobileFirst的JS HTTP适配器中动态传递JSON对象8

时间:2016-09-08 09:09:49

标签: javascript ionic-framework ibm-mobilefirst mobilefirst-adapters

我正在使用javascript Http适配器通过SOAP webservice获取数据。在这里,我使用离子与MFP8.0。

我的适配器实现文件是,

function getFeed(method, data) {
    var sr =
        "<soapenv:Envelope " +
          "xmlns:soapenv=\"http://schemas.xmlsoap.org/soap/envelope/\" " + "xmlns:len=\"targetNamespace HERE" >" +
        "<soapenv:Header/>"+
        "<soapenv:Body>" +
        "<len:authentication>" +
        "<method>"+method+"</method>"+ data +
        "</authentication></soapenv:Body></soapenv:Envelope>";

    var input = {
        method : 'post',
        returnedContentType : 'xml',
        path : 'PATH HERE',
        body: {
            content: sr,
            contentType: 'text/xml; charset=utf-8',
        },
    };
    return MFP.Server.invokeHttp(input);
}

在客户端是,

var resourceRequest = new WLResourceRequest("adapters/http/getFeed", WLResourceRequest.GET);
var dataList={
    username:data.uname,
    password:data.pswd
};
resourceRequest.setQueryParameter("params", "['myMethod', 'dataList']");
resourceRequest.send().then(
     function(response) {
         alert('response   '+JSON.stringify(response.responseText));
     },
     function(response) {
         alert("HTTP Failure  "+JSON.stringify(response));
     }
);

我需要动态传递JsonObject,它包含用户名和密码。我通过参数发送对象。

但是,我无法获取xml中的数据。 任何人都可以告诉我如何使用XML格式的JSON对象。

1 个答案:

答案 0 :(得分:2)

根据您提供的示例,在客户端代码中,您有一个名为dataList的变量,该变量是包含用户名和密码的对象。但是,当您将数据传递给WLResourceRequest时,您不会传递此对象,但是您传递了一个字符串&#39; dataList&#39;。

如果你想传递一个对象而不是一个字符串,你可以这样做:

var dataList={
 username:data.uname,
 password:data.pswd
};

resourceRequest.setQueryParameter("params", "['myMethod', '" + JSON.stringify(dataList) + "']");

现在,当你调用适配器时,第一个参数将收到字符串&#34; myMethod&#34;第二个将是一个对象。因此,您可以访问用户名和密码,例如:

function getFeed(method, data) {
    var username = data.username;
    var password = data.password;
  . . .