2

私は、ksoapを使用してc#asp.netで記述されたwsdlWebサービスと通信するAndroidクライアントを持っています。Webサービスとクライアントの間で引数の型を一致させることに問題があります。Webサーバーは、この種の要求(自動生成)を想定しています。

<?xml version="1.0" encoding="utf-8"?>
<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>
    <GetDetails xmlns="http://host.org/">
      <event_id>int</event_id>
    </GetDetails>
  </soap:Body>
</soap:Envelope>

クライアントはksoapを使用してリクエストを送信し、次のようになります。

<v:Envelope xmlns:i="http://www.w3.org/2001/XMLSchema-instance" xmlns:d="http://www.w3.org/2001/XMLSchema" xmlns:c="http://schemas.xmlsoap.org/soap/encoding/" xmlns:v="http://schemas.xmlsoap.org/soap/envelope/">
   <v:Header />
       <v:Body>
           <n0:GetDetails id="o0" c:root="1" xmlns:n0="http://tempuri.org">
              <event_id i:type="d:int">1</event_id>
           </n0:GetDetails>
       </v:Body>
</v:Envelope>

何らかの理由で、リクエストが最初のオプションのように手動でアセンブルされると、WSは次のクライアントのリクエストを0として解析します(追加のタイプ属性-i:type = "d:int"のためだと思います)。正しく機能します。Webサービスにksoap形式を正しく読み取らせるにはどうすればよいですか、またはksoapリクエストのように期待される形式を変更するにはどうすればよいですか。(WebサービスのSOAPプロトコルは自動生成されます)。

4

1 に答える 1

0

解決策には2つの部分があります:1。属性タイプの削除に関して、私はここで答えを見つけました: Android用のksoap2で "i:type ="属性なしでaddMappingを 使用する:設定する必要があります:

envelope.implicitTypes = true;
  1. 名前空間はバックスペースで終わる必要があり、私はそれを逃しました。
于 2012-04-07T16:44:48.547 に答える