如何在 Android 中一次调用多个 Web 服务或一个一个调用?因为如果我添加两个属性,则会发生错误。我使用 KSOAP2 来调用 web 服务。
问问题
1388 次
2 回答
1
您可以使用 Mutlitple AsyncTask 执行并行 Web 服务调用。所以它会一次调用多个网络服务。现在,如果您想逐个执行,那么在单个 asynctask 中,您可以在获得前一个响应后执行。
对于 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");
}
}
}
在该代码中,您想获取两个 url、用户名、用户密码,只需调用简单方法并获取 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 回答