嗨,我是Android Java开发的新手,正在尝试从我的Android Java应用程序调用Java Web服务。尝试运行此应用程序时,出现一个异常,内容为android.os.NetworkOnMainThreadException。我不知道为什么会出现这个错误。无论如何,都会卡在此错误中。我已经为此做了很多搜索,但是找不到确切的解决方案。任何人都可以帮忙吗?

        SoapObject request = new SoapObject(NAMESPACE, METHOD_NAME);
        SoapSerializationEnvelope envelope = new SoapSerializationEnvelope(SoapEnvelope.VER11);
        envelope.setOutputSoapObject(request);
        HttpTransportSE androidHttpTransport = new HttpTransportSE(URL);
        androidHttpTransport.call(SOAP_ACTION,envelope);
        SoapObject so = (SoapObject)envelope.bodyIn;


在完成调试后,我认为这些代码androidHttpTransport.call(SOAP_ACTION,envelope); SoapObject so = (SoapObject)envelope.bodyIn;行正在产生问题。
代码envelope.bodyIn给我一个空值。

最佳答案

您可以使用AsyncTask,这将避免创建自己的线程的麻烦。在doInBackGround方法中进行网络调用



 public void onClick(View v) {
    new DownloadImageTask().execute(data);
 }
 class Data {
      String namespace;
      String method;
 }

 private class DownloadImageTask extends AsyncTask<data, Void, SoapObject> {

 protected SoapObject doInBackground(Data... data) {
    //make your network call and return SoapObject
 }


protected void onPostExecute(SoapObject obj) {
    //process the Soap Object returned
}
}

07-24 09:44
查看更多