15

Web メソッドの認証の一部として SOAP ヘッダー情報を設定する必要があります。ksoap2 API を使用して .NET Web サービスを呼び出しています。リクエスト付きの SOAP ヘッダーを次に示します。

<soap:Header>
    <DTHeader xmlns="http://myServer.com/webservices/">
      <Username> string </Username>
      <Password> string </Password>
    </DTHeader>
</soap:Header>
<soap:Body>
    <MyTestMethod xmlns="http://myServer.com/webservices/">
       <ID> string </ID>
       <TransID> guid </TransID>
     </MyTestMethod>
</soap:Body>

SOAPヘッダー「DTHeader」を設定し、「ユーザー名」と「パスワード」を設定するAndroidコードを提供してください。

4

2 に答える 2

29

私はこのようにしました:

import org.kxml2.kdom.Element;

それから封筒を準備しながら

soapEnvelope.headerOut = new Element[1];
soapEnvelope.headerOut[0] = buildAuthHeader();
// ...send request...

private Element buildAuthHeader() {
    Element h = new Element().createElement(NAMESPACE, "AuthHeader");
    Element username = new Element().createElement(NAMESPACE, "user");
    username.addChild(Node.TEXT, USERNAME);
    h.addChild(Node.ELEMENT, username);
    Element pass = new Element().createElement(NAMESPACE, "pass");
    pass.addChild(Node.TEXT, PASSWORD);
    h.addChild(Node.ELEMENT, pass);

    return h;
}

もちろん、必要に応じて文字列を変更してください。

于 2011-04-10T19:45:01.603 に答える
10

これをjavaと.netで動作させるために、2日間を費やし、ついに動作するようになりました。

ArrayList<HeaderProperty> headerProperty = new ArrayList<HeaderProperty>();

headerProperty.add(new HeaderProperty("guid", "value..."));

androidHttpTransport.call(soap_action,envelope,headerProperty); 

上記の例を試して、ヘッダーセクションを追加しましたが、.netと互換性がありませんでした。

私のコードは機能しますが、ここからKSoap2バージョンksoap2-android-assembly-2.5.7-jar-with-dependencies.jarが必要です:ksoapjarファイルの場所

右クリックしてrawファイルを表示し、[名前を付けて保存]をクリックします。

私を正しい方向に向けてくれたフォーラムのすべての助けに感謝します...

于 2011-07-10T13:09:27.493 に答える