0

Androidで一度にまたは1つずつ複数のWebサービスを呼び出すにはどうすればよいですか?2つのプロパティを追加すると、エラーが発生するためです。Webサービスの呼び出しにはKSOAP2を使用しています。

4

2 に答える 2

1

Mutlitple AsyncTaskを使用して、並列Webサービス呼び出しを実行できます。したがって、一度に複数のWebサービスを呼び出すことになります。これで、1つずつ実行したい場合は、単一の非同期タスクで、前のタスクの応答を取得した後に実行できます。

AsycTaskについては、このリンクを参照してください

AsyncTaskAndroidの例

于 2013-02-22T04:58:01.260 に答える
0

WebサービスのAsynctaskを呼び出して、バックグラウンドプロセスの値を取得します。

SoapTask task = new SoapTask();
task.execute(); 

public class SoapTask extends AsyncTask<Void, Void, Void> {

    @Override
    protected void onPreExecute() {
    }

    @Override
    protected Void doInBackground(Void... urls) {
        Live_Price();
        return null;
    }

    @Override
    protected void onPostExecute(Void result) {

        if(!error){
        try {
            Object mObject = response.getProperty(0);
            float str = Float.parseFloat(mObject.toString());
            float gold = (float) (str / 31.10);

            Object mObjectsilver = responseSilver;
            float str1 = Float.parseFloat(mObjectsilver.toString());
            float silver = (float) (str1 / 31.10);

            // U just the get the value from the response like above and print it..

        } catch (Exception e) {
            e.printStackTrace();
        }
        }else {
            System.out.println("server side problem"); 
        }
    }
}

そのコードでは、uは2つのURL、username、userpasswordを取得し、単純なメソッドを呼び出して、値を与えるためにWebサービスの応答を取得したいと考えています。そして、応答変数は、任意の方法で単純に使用するグローバルを宣言します。

     public void Live_Price(){
        try {
            androidHttpTransport.call(SOAP_ACTION, envelope);
                            response = (SoapObject) envelope.getResponse();
            Log.d("myApp","call..ss..>"+ response.toString());

        } catch (Exception e) {
            error = true;
            e.printStackTrace();
        }

        try {
            androidHttpTransportsilver.call(SOAP_ACTIONsilver, envelopesilver);
            responseSilver = (SoapPrimitive) envelopesilver.getResponse();
            Log.d("myApp","call..ss..>"+ responseSilver.toString());

        } catch (Exception e) {
            error = true;
            e.printStackTrace();
        }
    }
于 2014-01-01T05:56:43.180 に答える