Android SOAP NTLM的例子?

时间:2012-04-21 17:09:45

标签: android soap ntlm dynamics-nav

我试图谷歌寻找一个有效的例子。我尝试过KSOAP2和JCIFS示例,但没有成功。我尝试连接的Web服务是第三方(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运行它时,我收到一条错误消息&#34; Connection refused&#34;。 重要的是要注意我是Java和Android的初学者。

1 个答案:

答案 0 :(得分:0)

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

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

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