嗨,我是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
}
}