Soap Adpter 问题:无法从未定义读取属性“Body”:WORKLIGHT
Posted
技术标签:
【中文标题】Soap Adpter 问题:无法从未定义读取属性“Body”:WORKLIGHT【英文标题】:Soap Adpter Isssue:Cannot read property "Body" from undefined: WORKLIGHT 【发布时间】:2013-06-18 11:20:48 【问题描述】:我正在为基于 HTTP soap 的调用制作一个适配器,调用代码如下,在调用适配器时我收到如下错误:“Cannot read property “Body” from undefined”。
SOAPAdapter.xml 是:
<wl:adapter xmlns:wl="http://www.worklight.com/integration" xmlns:http="http://www.worklight.com/integration/http" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" name="SOAPAdapter">
<displayName>SOAPAdapter</displayName>
<description>SOAPAdapter</description>
<connectivity>
<connectionPolicy xsi:type="http:HTTPConnectionPolicyType">
<protocol>http</protocol>
<domain>*.*.com</domain>
<port>80</port>
</connectionPolicy>
<loadConstraints maxConcurrentConnectionsPerNode="2"/>
</connectivity>
<procedure name="get_soap_req_list"/>
SOAPAdapter-impl.js 是:
函数 get_soap_req_list()
var request =
'<soap:Envelope xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/">'
+'<soap:Body>'
+'<AddList xmlns="http://schemas.microsoft.com/sharepoint/soap/">'
+'<listName>tiu</listName>'
+'<description>uyt</description>'
+'<templateID>6</templateID>'
+'</AddList>'
+'</soap:Body>'
+'</soap:Envelope>';
WL.Logger.debug("@@@"+request);
var input =
method : 'post',
returnedContentType : 'xml',
path : '/_vti_bin/Lists.asmx',
body :
content: request.toString(),
contentType: 'text/xml; charset=utf-8'
;
**27** var result = WL.Server.invokeHttp(input);
**28** return result;
控制台错误是:
E:调用过程 SOAPAdapter/get_soap_req_listFWLSE0100E 时发生错误:参数: “arr”:[ 9 ] 类型错误:无法从未定义(D%3A%5CWorklightworkSpace%5Cmodule_05_2_HTTP_Adapter%5Cadapters%5CSOAPAdapter/SOAPAdapter-impl.js#42)读取属性“Body” FWLSE0101E: 原因:null
结果输出:
“错误”:[ ], “信息”:[ ], “成功”:是的, “响应标头”: “内容长度”:“0”, "日期": "2013 年 6 月 20 日星期四 11:08:03 GMT", "MicrosoftSharePointTeamServices": "14.0.0.6123", "SPRequestGuid": "7a89adce-9ede-4197-bfc4-aff18e85e763", "服务器": "Microsoft-IIS/7.5", "WWW-Authenticate": "NTLM", "X-MS-InvokeApp": "1; RequireReadOnly", “X-Powered-By”:“ASP.NET” , “响应时间”:156, “状态码”:401, "statusReason": "未授权", “文本”: ””, “总时间”:172, “警告”:[ ]
【问题讨论】:
请看这个问题的答案是否对您有帮助:***.com/questions/15428615/… 【参考方案1】:改为“返回结果;”
输出是什么?
【讨论】:
执行没有结果,错误是在调用 HTTP 过程时。错误::E:调用过程 SOAPAdapter/get_soap_req_listFWLSE0100E 时发生错误:参数:“arr”:[] 类型错误:找不到对象的默认值。 (D%3A%5CWorklightworkSpace%5Cmodule_05_2_HTTP_Adapter%5Cadapters%5CSOAPAdapter/SOAPAdapter-impl.js#28) FWLSE0101E:原因:null 你能粘贴带有行号的适配器代码吗?此外,将 returnedContentType 更改为“plain”并重试。 你不能用字符串连接结果,它会失败。将您的代码更改为: WL.Logger.debug("result start ---------"); WL.Logger.debug(结果); WL.Logger.debug("结果结束--------"); ok..返回类型应该是什么?如果我写 'return result' 那么它的返回结果但是如果我写 'return result.Envelope.Body;'那么错误是 'TypeError: Cannot read property "Body" from undefined ' 正如您在响应中看到的,您的 IIS 后端需要 HTTP 身份验证(使用 NTLM)。您需要提供标头/凭据才能使用它。您可以将适配器配置为使用 NTLM,这在此处进行了描述 - pic.dhe.ibm.com/infocenter/wrklight/v5r0m6/…以上是关于Soap Adpter 问题:无法从未定义读取属性“Body”:WORKLIGHT的主要内容,如果未能解决你的问题,请参考以下文章