Androidで一度にまたは1つずつ複数のWebサービスを呼び出すにはどうすればよいですか?2つのプロパティを追加すると、エラーが発生するためです。Webサービスの呼び出しにはKSOAP2を使用しています。
1388 次
2 に答える
1
Mutlitple AsyncTaskを使用して、並列Webサービス呼び出しを実行できます。したがって、一度に複数のWebサービスを呼び出すことになります。これで、1つずつ実行したい場合は、単一の非同期タスクで、前のタスクの応答を取得した後に実行できます。
AsycTaskについては、このリンクを参照してください
于 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 に答える