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的主要内容,如果未能解决你的问题,请参考以下文章

java怎么解析文本文件中的soap报文

无法使用 DOM 解析器读取带有命名空间前缀的 xml

无法读取未定义类型错误的属性“推送”:无法读取未定义错误的属性“推送”

`无法读取未定义的属性(读取'组件')`

TypeError:无法读取未定义的属性(读取“问题”)

Python Zeep SOAP 客户端模块 - 无法为元素设置属性