1

我试图用谷歌搜索一个可行的例子。我已经尝试过 KSOAP2 和 JCIFS 示例,但没有成功。我尝试连接的 Web 服务是第 3 方(Microsoft Dynamics NAV),无法修改。它使用 SOAP 和 SPNEGO 或 NTLM 身份验证。我猜它已经是 NTLMv2 但我不确定。任何人都可以向我推荐以下 SOAP 请求的完整代码吗?

$<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:item="urn:microsoft-dynamics-schemas/page/items">
$   <soapenv:Header/>
$   <soapenv:Body>
$      <item:ReadMultiple>
$         <!--1 or more repetitions:-->
$         <item:filter>
$            <item:Field>No</item:Field>
$            <item:Criteria>1000</item:Criteria>
$         </item:filter>
$         <item:setSize>500</item:setSize>
$      </item:ReadMultiple>
$   </soapenv:Body>
$</soapenv:Envelope>

我已经用soapUI 验证了这个请求,它工作正常。但是当我尝试使用 KSOAP2 和 JCIFS 运行它时,我收到一条错误消息“连接被拒绝”。需要注意的是,我是 Java 和 Android 的初学者。

4

1 回答 1

0

我在 NAV 和 SOAP 方面的经验有限,但是我在身份验证方面遇到了类似的问题。

我需要做的是实际运行请求两次。由于某种原因,第一个请求永远不会通过(也许是握手的一部分?),但第二个请求会返回一个有效的响应。最好的调试工具是一个简单的 HTTP 代理(例如 Burpsuite),它可以让我查看到底发送了什么(根据标头等)以及响应是什么。

其次,当我手动创建这个 SOAP 请求时,我错过了 NAV 的 SOAPAction 标头。我不确定这是否是标准的,但我需要使用带有 .NET Web 服务连接的 HTTP 代理(通过 SOAP 与 NAV 交谈的官方方式)并了解它是如何交谈的。

于 2012-04-22T22:41:34.807 回答