1

実際の例をグーグルで検索しようとしました。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 で実行しようとすると、「接続が拒否されました」というエラー メッセージが表示されます。私は Java と Android の初心者です。

4

1 に答える 1

0

NAV と SOAP の経験は限られていますが、認証に関しても同様の問題がありました。

私がする必要があったのは、実際にリクエストを 2 回実行することです。なんらかの理由で、最初のリクエストは (おそらくハンドシェイクの一部として) 通過しませんでしたが、2 番目のリクエストは有効な応答を返しました。最適なデバッグ ツールは単純な HTTP プロキシ (Burpsuite など) でした。これにより、送信された内容 (ヘッダーなど) と応答内容を正確に確認できました。

次に、この SOAP リクエストを手動で作成していたため、NAV の SOAPAction ヘッダーを見逃していました。これが標準かどうかはわかりませんが、.NET Web サービス接続 (SOAP を介して NAV と対話する公式の方法) で HTTP プロキシを使用し、それがどのように対話しているかを調べる必要がありました。

于 2012-04-22T22:41:34.807 に答える