0

如何在 Android 中一次调用多个 Web 服务或一个一个调用?因为如果我添加两个属性,则会发生错误。我使用 KSOAP2 来调用 web 服务。

4

2 回答 2

1

您可以使用 Mutlitple AsyncTask 执行并行 Web 服务调用。所以它会一次调用多个网络服务。现在,如果您想逐个执行,那么在单个 asynctask 中,您可以在获得前一个响应后执行。

对于 AsycTask,请参考此链接

AsyncTask Android 示例

于 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 回答