2012-04-21 54 views
1

我试着谷歌周围的一个工作的例子。我试过KSOAP2和JCIFS的例子,但没有成功。我试图连接的Web服务是第三方(Microsoft Dynamics NAV),无法修改。它使用SOAP以及SPNEGO或NTLM身份验证。我想这已经是NTLMv2了,但我不确定。 任何人都可以请我建议一个完整的代码以下的SOAP请求?Android SOAP NTLM示例?

$<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的初学者。

+0

你好,请你给我们提供示例代码ntlm身份验证在Android为Navision Web服务?我们尝试使用(JCIF)samba lib进行ntlm身份验证。 – 2013-10-10 14:20:30

回答

0

我对NAV和SOAP的经验有限,但是我遇到了与验证类似的问题。

我需要做的是实际运行两次请求。出于某种原因,第一个请求永远不会通过(也许作为握手的一部分?),但第二个请求会返回有效的响应。最好的调试工具是一个简单的HTTP代理(例如Burpsuite),它让我看到究竟发送了什么(根据头文件等)以及响应是什么。其次,由于我手动创建这个SOAP请求,我错过了NAV的SOAPAction头。我不确定这是否是标准的,但我需要使用带有.NET Web服务连接的HTTP代理(通过SOAP与NAV对话的官方方式),并且发现它是如何谈话的。