AndroidでSOAP Webサービスを呼び出す方法[終了]


553

Androidで標準のSOAP / WSDL Webサービスを呼び出す方法に関する適切な情報を見つけるのに苦労しています。私が見つけることができたのは、非常に複雑なドキュメントと「kSoap2」への参照であり、それからSAXを使用してすべてを手動で解析することについて少しです。OK、それは問題ありませんが、2008年なので、標準のWebサービスを呼び出すための優れたライブラリがあるはずです。

Webサービスは、基本的にはNetBeansで作成されたものです。配管クラスを生成するためのIDEサポートが欲しいのですが。Androidベースの電話からWSDLベースのWebサービスに接続する最も簡単でエレガントな方法が必要です。


AndroidでのSOAPの使用に関する非常に優れたリンクを以下に
示します。SOAP

以前にMS VSに精通している人が、Mono for Androidを使用すると、データサービスとWebサービスに関する多くの問題を解決できれば、すべてがシンプルで迅速な開発です。また、C#(Javaに非常によく似たコード)に精通していない場合、すべてのライブラリは同じメソッドを持ち、一部の関数はプロパティで置き換えられているため、名前がほぼ同じで、AndroidのJavaで以前に書いた人は、経験を使用してc#を書くのが非常に簡単です。コード。
ユージーンボシコフ2013

以下のリンクをご覧ください。Ksoap2を使用したAndroidでのWebサービスへのアクセス
Fred

これは、.Net Coreを使用したXamarin / C#で可能であると思います。blogs.msdn.microsoft.com/webdev/2016/05/25/…を
Vahid Amiri

Springによるこのツールは有望に見えます。
ルイ

回答:


245

Androidは、いかなる種類のSOAPライブラリも提供していません。独自に作成することも、kSOAP 2のようなものを使用することもできます。お気づきのように、他の人たちは独自のプロジェクトでkSOAP2をコンパイルして使用することができましたが、私はそうする必要がありませんでした。

Googleはこれまで、SOAPライブラリをAndroidに追加することにほとんど関心を示していませんでした。これに対する私の疑いは、RESTベースのサービスへのWebサービスの現在の傾向をサポートし、JSONをデータカプセル化形式として使用することです。または、メッセージングにXMPPを使用します。しかし、それは単なる推測です。

現時点では、XMLベースのWebサービスは、Androidで少し重要なタスクです。NetBeansを知らないので、そこで利用可能なツールについて話すことはできませんが、より優れたライブラリが利用可能であることに同意します。XmlPullParserによってSAXを使用する必要がなくなる可能性がありますが、それについてはあまり知りません。


7
ええ、私はRESTプロキシを構築する必要があると思います。GoogleがSOAPサポートの提供に関心を持たないのはかなり奇妙に思えます。私はkSoapメソッドを試しましたが、それは本当に深刻な代替手段ではありません。せいぜい、ニュースグループの精査を必要とする醜い問題でした。
BobbyShaftoe 2008年

19
その理由はおそらく、SOAPは非常に冗長であり、モバイルコンピューティングの制約にうまく対応していないためです。
ニール、

92
この答えは、誰かがAndroidアプリでWebサービスを呼び出す最善の方法提案できれば改善されます。人々がこの質問を見つけて読んだら、それが彼らのほとんどが探しているものです。
MGOwen 2009

4
SOAP処理は、JSONのようなより簡潔な形式と比較して、メモリとプロセッサを集中的に使用します。
Jeremy Edwards、

3
@MGOwen私が見ることができる最良の代替手段はプロキシです。WSDL2Javaを介してSOAPエンベロープをプロキシするREST-fulインターフェースを実装します。

99

org.apache.http.impl.client.DefaultHttpClientデフォルトでAndroid SDKに含まれています。これで、WSDLに接続できます。

HttpClient httpClient = new DefaultHttpClient();
HttpContext localContext = new BasicHttpContext();
HttpGet httpGet = new HttpGet("http://www.example.com/" + URL);
HttpResponse response = httpClient.execute(httpGet, localContext);

5
ええ、これは私が手動ですべてを解析しなければならないルートであり、オブジェクト指向のアプローチは得られません。
BobbyShaftoe 2009年

93
あなたは無料のランチを手に入れられないということです。手動解析はOOとは何の関係もありません。私はHB1鉛筆である最も高度なツールで紙の上ですべてを解析できましたが、それでもオブジェクト指向のままです。
ニール、

8
私は、OOがJava-XMLバインディングを意味していると信じています。応答を解析するこのアプローチの次のステップは何ですか?そして、それがツリー構造で編成された何百もの要素を持っているなら?
rustyx

12
ところで、SOAPで運がよければ、少なくともGETではなくHTTP POSTを期待します。また、AcceptヘッダーとSOAPActionヘッダーはどこにありますか?あなたが本当にコマンドに行きたいなら、SOAPサービスを消費するためにこれらの4行よりはるかに多くの時間がかかります。
rustyx

6
@NeilD:WebサーバーがSOAPを使用していて、これを制御できないなど、SOAPの使用を余儀なくされた場合はどうなりますか?
Bjarke Freund-Hansen

59

オーバーヘッドがあるため、SOAPはモバイルデバイスとのデータ交換に最適ではありません。ただし、サーバー出力の形式を制御しない状況に陥ることがあります。

したがって、SOAPを使用する必要がある場合は、http://code.google.com/p/ksoap2-android/にAndroid用にパッチされたkSOAP2ライブラリがあり
ます。


31

モバイルデバイス(特にAndroidフォン)からWebサービスを呼び出すには、非常に簡単な方法を使用しました。Webサービスを呼び出すためにWebサービスクライアントAPIを使用していません。電話をかけるための私のアプローチは以下の通りです。

  1. Java標準APIを使用して、単純なHTTP接続を作成します HttpURLConnection
  2. SOAPリクエストを作成します。(SOAPUIを使用してSOAP要求を行うことができます。)
  3. doOutPutフラグをtrueに設定します。
  4. content-length、Content type、User-agentなどのHTTPヘッダー値を設定します。Content-length値は必須なので、忘れずに設定してください。
  5. SOAPリクエスト全体を出力ストリームに書き込みます。
  6. メソッドを呼び出して接続を確立し、応答を受信します(私の場合はを使用しました getResonseCode)。
  7. あなたが受け取った応答コードとして
    1. これは、Webサービスの呼び出しに成功したことを意味します。
  8. 次に、同じHTTP接続で入力ストリームを受け取り、文字列オブジェクトを受け取ります。この文字列オブジェクトはSOAP応答です。
  9. 応答コードが200以外の場合、ErrorInput同じHTTPobjectでストリームを取得し、エラーがある場合はそれを受け取ります。
  10. SAXParser(私の場合)またはDOMParaserまたはその他の解析メカニズムを使用して、受信した応答を解析します。

この手順をAndroidフォンに実装しましたが、正常に実行されています。700 KBを超えている場合でも、応答を解析できます。


30

SOAPは、処理/解析のオーバーヘッドが必要なため、Android(またはモバイルデバイス全般)での使用には適さないテクノロジです。RESTサービスは、より軽量なソリューションであり、それが私が提案するものです。AndroidにはSAXパーサーが付属しており、使用するのはかなり簡単です。モバイルデバイスでSOAPを処理/解析する必要がある場合は、申し訳ありません。SOAPを使用しないことをお勧めします。


2
開発者にREST APIの代わりにSOAPサービスを使用するよう強制する人のために、地獄には特別な場所があります。
Hitesh Sahu

24

約1年前、私はこのスレッドを読んで、AndroidでSOAP呼び出しを行う方法を理解しようとしました-HttpClientを使用して独自にSOAPを構築する提案により、Android用の独自のSOAPライブラリが構築されました。

IceSoap

基本的には、単純なJava APIを介して送信するエンベロープを構築し、XPathを介して定義したオブジェクトにそれらを自動的に解析することができます...例:

<Dictionary>
    <Id></Id>
    <Name></Name>
</Dictionary>

になる:

@XMLObject("//Dictionary")
public class Dictionary {
    @XMLField("Id")
    private String id;

    @XMLField("Name")
    private String name;
}

自分のプロジェクトで使用していましたが、他の人の役に立つかもしれないと思ったので、時間をかけてそれを分離して文書化しました。「SOAP Android」をグーグルしながらこのスレッドにつまずくあなたの貧しい魂の一部がそれを試して利益を得ることができれば、私は本当にそれが大好きです。


IceSoapでセッション認証を使用しましたか?
Adnen Chouibi 2016

24

プロジェクトにksoap2.jarを追加することを忘れないでください。また、AndroidManifestファイルにINTERNET権限を追加してください。

import org.ksoap2.SoapEnvelope;
import org.ksoap2.serialization.PropertyInfo;
import org.ksoap2.serialization.SoapObject;
import org.ksoap2.serialization.SoapPrimitive;
import org.ksoap2.serialization.SoapSerializationEnvelope;
import org.ksoap2.transport.HttpTransportSE;
import android.app.Activity;
import android.os.Bundle;
import android.widget.TextView;

public class WebserviceActivity extends Activity {

    private static final String NAMESPACE = "https://api.authorize.net/soap/v1/";
    private static final String URL ="https://apitest.authorize.net/soap/v1/Service.asmx?wsdl"; 
    private static final String SOAP_ACTION = "https://api.authorize.net/soap/v1/AuthenticateTest";
    private static final String METHOD_NAME = "AuthenticateTest";
    private TextView lblResult;


    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);

        lblResult = (TextView) findViewById(R.id.tv);

        SoapObject request = new SoapObject(NAMESPACE, METHOD_NAME); 
        request.addProperty("name","44vmMAYrhjfhj66fhJN");
        request.addProperty("transactionKey","9MDQ7fghjghjh53H48k7e7n");
        SoapSerializationEnvelope envelope = new SoapSerializationEnvelope(SoapEnvelope.VER11); 
        envelope.setOutputSoapObject(request);
        HttpTransportSE androidHttpTransport = new HttpTransportSE(URL);
        try {
            androidHttpTransport.call(SOAP_ACTION, envelope);

            //SoapPrimitive  resultsRequestSOAP = (SoapPrimitive) envelope.getResponse();
            // SoapPrimitive  resultsRequestSOAP = (SoapPrimitive) envelope.getResponse();
            SoapObject resultsRequestSOAP = (SoapObject) envelope.bodyIn;


            lblResult.setText(resultsRequestSOAP.toString());
            System.out.println("Response::"+resultsRequestSOAP.toString());


        } catch (Exception e) {
            System.out.println("Error"+e);
        }

    }
}

HttpTransportSEこのクラスはどこで入手できますか?
ノーマン

こんにちは、コードを使用していますが、Response :: AuthenticateTestResponse {AuthenticateTestResult = anyType {resultCode = Error;というエラーが発生します。messages = anyType {MessagesTypeMessage = anyType {code = E00014; text =販売者認証が必要です。; }; }; }; }助けてくれませんか?
Hasmukh 2013

こんにちはAmit imもamit .....応答が得られたときに比較する応答がどのように比較されるか、どのように、どのような条件で応答をチェックするかを教えてもらえますか......
Amitsharma

リクエストプロパティのxmlに配列を追加する方法
droidster.me

21

私はKSOAPを試してみました。私はかなり単純なアプローチを選択しました。

WSDLファイルを指定して、リクエストごとに(たとえば、SOAP UIを使用して)SOAPリクエストテンプレートを作成し、コードで渡される値に置き換えます。DefaultHttpClientインスタンスを使用してこのデータをサービスエンドポイントにPOSTし、応答ストリームを取得します。XMLプルパーサーを使用して応答ストリームを解析します。



16

Androidプラットフォーム用の新しいSOAPクライアントを作成しました。JAX-WSで生成されたインターフェースを使用していますが、これは現時点での概念実証にすぎません。

興味がある場合は、例を試すか、AndroidSOAPでソースをご覧ください。


1
JUM XVIIでのプレゼンテーションに参加できて光栄でした。このAndroidに関するブダペスト。今後ともよろしくお願いいたします。
pcjuzer 2010年

15

可能であれば、JSONを使用してください。Androidには完全なorg.jsonパッケージが付属しています


14

ksoap2メソッドを呼び出します。それは非常にうまく機能します。

などの詳細を設定します

private static String mNAMESPACE=null;
private static String mURL=null;
public static Context context=null;
SoapSerializationEnvelope envelope = new SoapSerializationEnvelope(SoapEnvelope.VER11);
envelope.dotNet = true;
envelope.setOutputSoapObject(Request);

envelope.addMapping(mNAMESPACE, "UserCredentials",new UserCredendtials().getClass());
AndroidHttpTransport androidHttpTransport = new AndroidHttpTransport(mURL);

そして結果を得るには

androidHttpTransport.call(SOAP_ACTION, envelope);
result = (SoapPrimitive)envelope.getResponse();


11

数ヶ月前、私たちはそこ使用していた、J2EEアプリケーションでJAX-WS Webサービスで働いていたCXFのWSDL2Javaのを WSDLファイルから、我々はWebサービスを消費し、それらのクライアントスタブとWSクライアントスタブを生成します。数週間前、私がAndroidプラットフォームで同じ方法でWebサービスを利用しようとしていたとき、それができませんでした。Androidjarには、「jax-ws」をサポートするクラスがすべて含まれていないためです。そのとき私は私の要件を満たすためのそのようなツールを見つけられませんでした(私が効率的にグーグルすることに失敗しなかった場合)-

  • WSDLからクライアントスタブを取得します。
  • そして、いくつかの引数(Javaビジネスリクエストオブジェクト)を使用してServiceを呼び出します。
  • 応答ビジネスオブジェクトを取得します。

そこで、私は独自のAndroid SOAPクライアント生成ツールを開発しました。これらの手順に従う必要がある場所:

  • WSDL Get WS Client Stubから、プロジェクトに配置します。
  • いくつかのサービス「ComplexOperationService」と言って、サービスをインスタンス化し、エンドポイントポートを取得してサービスメソッドを呼び出し、Webサービスから応答を取得します。

例えば:

ComplexOperationService service = new ComplexOperationService( );
ComplexOperation port= service.getComplexOperationPort();    
SomeComplexRequest request = --Get some complex request----;    
SomeComplexResp resp = port.operate( request  );
  • すべてがWSDLから生成されていることがわかっているので、サービスクラス/要求/応答クラスまたはその他のクラスとメソッドについても気にする必要はありません。
  • そしてもちろん、あなたはsoap action / envelop / namespaceなどを意識する必要はありません。私たちのようにメソッドを呼び出すだけで、開発者はいつもそうします。

あなたは日付の扱い方を知っていますか?Apache CXFはそれをAndroidで作成できないXMLGregorianCalendarに変換します。
Martin Nuc



6

メソッドSOAPによってこれらのステップに従います

WSDLファイルから、

  • リクエストごとにSOAPリクエストテンプレートを作成します。

  • 次に、コードで渡される値を置き換えます。

  • DefaultHttpClientインスタンスを使用して、このデータをサービスエンドポイントにPOSTします。

  • 最後に応答ストリームを取得します

  • XMLプルパーサーを使用して応答ストリームを解析します。



6

私にとって最も簡単な方法は、適切なツールを使用して必要なすべてのクラスを生成することです。個人的に私はこのサイトを使用しています:

http://easywsdl.com/

非常に複雑なWebサービスをサポートし、ksoap2を使用します。


5

私を大いに助けてくれた非常に便利なツールをチェックすることをお勧めします。そのプロジェクトの世話をする人たちも非常に役に立ちました。www.wsdl2code.com/


5

AndroidでのWebサービスの呼び出しに問題がある場合は、以下のコードを使用してWebサービスを呼び出し、応答を取得できます。Webサービスがデータテーブル形式で応答を返すことを確認してください。このコードは、SQL Serverデータベースのデータを使用する場合に役立ちます。MYSQLを使用している場合は、1つのことを変更する必要があります。文からNewDataSetという単語obj2=(SoapObject) obj1.getProperty("NewDataSet");DocumentElementで置き換えます。

void callWebService(){ 

private static final String NAMESPACE = "http://tempuri.org/"; // for wsdl it may be package name i.e http://package_name
private static final String URL = "http://localhost/sample/services/MyService?wsdl";
// you can use IP address instead of localhost
private static final String METHOD_NAME = "Function_Name";
private static final String SOAP_ACTION = "urn:" + METHOD_NAME;

    SoapObject request = new SoapObject(NAMESPACE, METHOD_NAME);
    request.addProperty("parm_name", prm_value);// Parameter for Method
    SoapSerializationEnvelope envelope = new SoapSerializationEnvelope(SoapEnvelope.VER11);
    envelope.dotNet = true;// **If your Webservice in .net otherwise remove it**
    envelope.setOutputSoapObject(request);
    HttpTransportSE androidHttpTransport = new HttpTransportSE(URL);

    try {
        androidHttpTransport.call(SOAP_ACTION, envelope);// call the eb service
                                                                                                         // Method
    } catch (Exception e) {
        e.printStackTrace();
    }

    // Next task is to get Response and format that response
    SoapObject obj, obj1, obj2, obj3;
    obj = (SoapObject) envelope.getResponse();
    obj1 = (SoapObject) obj.getProperty("diffgram");
    obj2 = (SoapObject) obj1.getProperty("NewDataSet");

    for (int i = 0; i < obj2.getPropertyCount(); i++) { 
// the method getPropertyCount() and  return the number of rows
            obj3 = (SoapObject) obj2.getProperty(i);
            obj3.getProperty(0).toString();// value of column 1
            obj3.getProperty(1).toString();// value of column 2
            // like that you will get value from each column
        }
    }

これに関して何か問題があれば、私に書いてください。


4

SOAPライブラリファイルをダウンロードして、プロジェクトに追加してくださいファイル名:ksoap2-android-assembly-3.4.0-jar-with-dependencies

アプリケーションをクリーンアップしてからプログラムを起動します

SOAPサービス呼び出しのコードは次のとおりです

    String SOAP_ACTION = "YOUR_ACTION_NAME";
    String METHOD_NAME = "YOUR_METHOD_NAME";
    String NAMESPACE = "YOUR_NAME_SPACE";
    String URL = "YOUR_URL";
    SoapPrimitive resultString = null;

    try {
        SoapObject Request = new SoapObject(NAMESPACE, METHOD_NAME);
        addPropertyForSOAP(Request);

        SoapSerializationEnvelope soapEnvelope = new SoapSerializationEnvelope(SoapEnvelope.VER11);
        soapEnvelope.dotNet = true;
        soapEnvelope.setOutputSoapObject(Request);

        HttpTransportSE transport = new HttpTransportSE(URL);

        transport.call(SOAP_ACTION, soapEnvelope);
        resultString = (SoapPrimitive) soapEnvelope.getResponse();

        Log.i("SOAP Result", "Result Celsius: " + resultString);
    } catch (Exception ex) {
        Log.e("SOAP Result", "Error: " + ex.getMessage());
    }
    if(resultString != null) {
        return resultString.toString();
    }
    else{
        return "error";
    }

結果はJSONObjectまたはJSONArrayまたはStringの場合があります

参考までに、 https://trinitytuts.com/load-data-from-soap-web-service-in-android-application/

ありがとう。


3

これは、AndroidでSOAP Webサービスを使用する実際の例です。

**注:: ***プロジェクトにksoap2.jarを追加することを忘れないでください。また、AndroidManifestファイルにインターネット権限を追加してください*

public final String WSDL_TARGET_NAMESPACE = "http://tempuri.org/";
public final String METHOD_NAME = "FahrenheitToCelsius";
public final String PROPERTY_NAME = "Fahrenheit";
public final String SOAP_ACTION = "http://tempuri.org/FahrenheitToCelsius";
public final String SOAP_ADDRESS = "http://www.w3schools.com/webservices/tempconvert.asmx";


private class TestAsynk extends AsyncTask<String, Void, String> {

    @Override
    protected void onPostExecute(String result) {

        super.onPostExecute(result);
        Toast.makeText(getApplicationContext(),
                String.format("%.2f", Float.parseFloat(result)),
                Toast.LENGTH_SHORT).show();
    }

    @Override
    protected String doInBackground(String... params) {
        SoapObject request = new SoapObject(WSDL_TARGET_NAMESPACE,
                METHOD_NAME);
        request.addProperty(PROPERTY_NAME, params[0]);

        SoapSerializationEnvelope envelope = new SoapSerializationEnvelope(
                SoapEnvelope.VER11);
        envelope.dotNet = true;

        envelope.setOutputSoapObject(request);

        HttpTransportSE androidHttpTransport = new HttpTransportSE(
                SOAP_ADDRESS);
        Object response = null;
        try {

            androidHttpTransport.call(SOAP_ACTION, envelope);
            response = envelope.getResponse();
            Log.e("Object response", response.toString());

        } catch (Exception e) {
            e.printStackTrace();
        }
        return response.toString();
    }
}

この問題で私を助けてくださいstackoverflow.com/questions/41573829/...
Edijae Crusar

3

特定のヘッダーを使用して、http経由でポストとしてSOAPコールを実行できます。ksoap2のような追加のライブラリなしでこの質問を解決しました。SOAPサービスから注文を取得するライブコードを次に示します

private static HashMap<String,String> mHeaders = new HashMap<>();

static {
    mHeaders.put("Accept-Encoding","gzip,deflate");
    mHeaders.put("Content-Type", "application/soap+xml");
    mHeaders.put("Host", "35.15.85.55:8080");
    mHeaders.put("Connection", "Keep-Alive");
    mHeaders.put("User-Agent","AndroidApp");
    mHeaders.put("Authorization","Basic Q2xpZW50NTkzMzppMjR3s2U="); // optional
}public final static InputStream receiveCurrentShipments(String stringUrlShipments)
{
    int status=0;
    String xmlstring= "<soap:Envelope xmlns:soap=\"http://www.w3.org/2003/05/soap-envelope\" xmlns:ser=\"http://35.15.85.55:8080/ServiceTransfer\">\n" +
            "   <soap:Header/>\n" +
            "   <soap:Body>\n" +
            "      <ser:GetAllOrdersOfShipment>\n" +
            "         <ser:CodeOfBranch></ser:CodeOfBranch>\n" +
            "      </ser:GetAllOrdersOfShipment>\n" +
            "   </soap:Body>\n" +
            "</soap:Envelope>";
    StringBuffer chaine = new StringBuffer("");

    HttpURLConnection connection = null;
    try {
        URL url = new URL(stringUrlShipments);
        connection = (HttpURLConnection) url.openConnection();
        connection.setRequestProperty("Content-Length", xmlstring.getBytes().length + "");
        connection.setRequestProperty("SOAPAction", "http://35.15.85.55:8080/ServiceTransfer/GetAllOrdersOfShipment");

        for(Map.Entry<String, String> entry : mHeaders.entrySet()) {
            String key = entry.getKey();
            String value = entry.getValue();
            connection.setRequestProperty(key,value);

        }

        connection.setRequestMethod("POST");
        connection.setDoInput(true);

        OutputStream outputStream = connection.getOutputStream();
        outputStream.write(xmlstring.getBytes("UTF-8"));
        outputStream.close();

        connection.connect();
        status = connection.getResponseCode();
    } catch (ProtocolException e) {
        e.printStackTrace();
    } catch (MalformedURLException e) {
        e.printStackTrace();
    } catch (IOException e) {
        e.printStackTrace();
    } finally {

        Log.i("HTTP Client", "HTTP status code : " + status);
    }

    InputStream inputStream = null;
    try {
        inputStream = connection.getInputStream();
    } catch (IOException e) {
        e.printStackTrace();
    }

    return inputStream;
}

ヘルプはこちらからどうぞstackoverflow.com/questions/41573829/...
Edijae Crusar

これに関する2つの質問:1.これはメインアクティビティからどのように呼び出されますか?2.パラメータとして渡されるStringUrlShipmentの値は何ですか?

上記のコメントでは、質問1は無視してください。

メインアクティビティから、AsyncTaskを使用してこのコードを呼び出す必要があります。このAsyncTaskクラス内にdoInBackgroundを実装して、このコードを起動します
Lapenkov Vladimir

2

AndroidからSOAP Webサービスを呼び出すには、このクライアントを使用してみてください

Javaビルドパスにksoap2-android.jarを追加することを忘れないでください

public class WsClient {
    private static final String SOAP_ACTION = "somme";
    private static final String OPERATION_NAME = "somme";
    private static final String WSDL_TARGET_NAMESPACE = "http://example.ws";
    private static final String SOAP_ADDRESS = "http://192.168.1.2:8080/axis2/services/Calculatrice?wsdl";

    public String caclculerSomme() {

        String res = null;
        SoapObject request = new SoapObject(WSDL_TARGET_NAMESPACE,
                OPERATION_NAME);
        request.addProperty("a", "5");
        request.addProperty("b", "2");

        SoapSerializationEnvelope envelope = new SoapSerializationEnvelope(
                SoapEnvelope.VER11);
        envelope.dotNet = true;
        envelope.setOutputSoapObject(request);
        HttpTransportSE httpTransport = new HttpTransportSE(SOAP_ADDRESS);

        try {
            httpTransport.call(SOAP_ACTION, envelope);
            String result = envelope.getResponse().toString();
            res = result;
            System.out.println("############# resull is :" + result);
        } catch (Exception exception) {
            System.out.println("########### ERRER" + exception.getMessage());
        }

        return res;
    }
}

@ Wajdi hhギバーレスポンスの結果からのレスポンスを比較する方法:-成功..... "レスポンス= 1〜Successfull" ....サーバー側からの条件からの結果を比較する方法...... ..
Amitsharma 2014

1

ソープLibaray(ksoap2-android-assembly-3.2.0-jar-with-dependencies.jar)ます。

public static String Fn_Confirm_CollectMoney_Approval(

        HashMap < String, String > str1,
        HashMap < String, String > str2,
        HashMap < String, String > str3) {

    Object response = null;
    String METHOD_NAME = "CollectMoney";
    String NAMESPACE = "http://xxx/yyy/xxx";
    String URL = "http://www.w3schools.com/webservices/tempconvert.asmx";
    String SOAP_ACTION = "";

    try {

        SoapObject RequestParent = new SoapObject(NAMESPACE, METHOD_NAME);

        SoapObject Request1 = new SoapObject(NAMESPACE, "req");

        PropertyInfo pi = new PropertyInfo();

        Set mapSet1 = (Set) str1.entrySet();

        Iterator mapIterator1 = mapSet1.iterator();

        while (mapIterator1.hasNext()) {

            Map.Entry mapEntry = (Map.Entry) mapIterator1.next();

            String keyValue = (String) mapEntry.getKey();

            String value = (String) mapEntry.getValue();

            pi = new PropertyInfo();

            pi.setNamespace("java:com.xxx");

            pi.setName(keyValue);

            pi.setValue(value);

            Request1.addProperty(pi);
        }

        mapSet1 = (Set) str3.entrySet();

        mapIterator1 = mapSet1.iterator();

        while (mapIterator1.hasNext()) {

            Map.Entry mapEntry = (Map.Entry) mapIterator1.next();

            // getKey Method of HashMap access a key of map
            String keyValue = (String) mapEntry.getKey();

            // getValue method returns corresponding key's value
            String value = (String) mapEntry.getValue();

            pi = new PropertyInfo();

            pi.setNamespace("java:com.xxx");

            pi.setName(keyValue);

            pi.setValue(value);

            Request1.addProperty(pi);
        }

        SoapObject HeaderRequest = new SoapObject(NAMESPACE, "XXX");

        Set mapSet = (Set) str2.entrySet();

        Iterator mapIterator = mapSet.iterator();

        while (mapIterator.hasNext()) {

            Map.Entry mapEntry = (Map.Entry) mapIterator.next();

            // getKey Method of HashMap access a key of map
            String keyValue = (String) mapEntry.getKey();

            // getValue method returns corresponding key's value
            String value = (String) mapEntry.getValue();

            pi = new PropertyInfo();

            pi.setNamespace("java:com.xxx");

            pi.setName(keyValue);

            pi.setValue(value);

            HeaderRequest.addProperty(pi);
        }

        Request1.addSoapObject(HeaderRequest);

        RequestParent.addSoapObject(Request1);

        SoapSerializationEnvelope soapEnvelope = new SoapSerializationEnvelope(
                SoapEnvelope.VER10);

        soapEnvelope.dotNet = false;

        soapEnvelope.setOutputSoapObject(RequestParent);

        HttpTransportSE transport = new HttpTransportSE(URL, 120000);

        transport.debug = true;

        transport.call(SOAP_ACTION, soapEnvelope);

        response = (Object) soapEnvelope.getResponse();

        int cols = ((SoapObject) response).getPropertyCount();

        Object objectResponse = (Object) ((SoapObject) response)
                .getProperty("Resp");

        SoapObject subObject_Resp = (SoapObject) objectResponse;


        modelObject = new ResposeXmlModel();

        String MsgId = subObject_Resp.getProperty("MsgId").toString();


        modelObject.setMsgId(MsgId);

        String OrgId = subObject_Resp.getProperty("OrgId").toString();


        modelObject.setOrgId(OrgId);

        String ResCode = subObject_Resp.getProperty("ResCode").toString();


        modelObject.setResCode(ResCode);

        String ResDesc = subObject_Resp.getProperty("ResDesc").toString();


        modelObject.setResDesc(ResDesc);

        String TimeStamp = subObject_Resp.getProperty("TimeStamp")
                .toString();


        modelObject.setTimestamp(ResDesc);

        return response.toString();

    } catch (Exception ex) {

        ex.printStackTrace();

        return null;
    }

}
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.