我正在使用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对象。
答案 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;
. . .