0

我正在使用下面的代码从响应中获取值,但是我在主线程异常上收到以下错误网络,但是我确定 url、命名空间、方法和肥皂操作是正确的,因为它们在浏览器中工作,我在解析 SoapObject 和 soaSerializationEnvelope 时也遇到错误,我该如何解决这个问题,或者我是否可以有一个简单的例子来解析一个肥皂请求并获得一个非常好的项目的价值

公共无效测试(){

textView = (TextView) findViewById(R.id.textView1);

    SoapObject reSoapObject = new SoapObject(NAMESPACE, METHOD_NAME);

    SoapSerializationEnvelope soaSerializationEnvelope = new SoapSerializationEnvelope(
            SoapEnvelope.VER11);


    soaSerializationEnvelope.setOutputSoapObject(reSoapObject);
    HttpTransportSE httpTransportSE = new HttpTransportSE(URL);

    String ip = null;

    try {
        httpTransportSE.call(SOAP_ACTION, soaSerializationEnvelope);
        SoapObject soapObjectResultRoot = (SoapObject) soaSerializationEnvelope.bodyIn;

        Log.e(">>>>>>>>>>>>>>>>>>", "Root elemtn body: "
                + soapObjectResultRoot.toString());

        SoapObject soapObjectGetProperty = (SoapObject) soapObjectResultRoot.getProperty("return");
        ip = soapObjectGetProperty.getProperty("return").toString();


    } catch (IOException e) {
        e.printStackTrace();
    } catch (XmlPullParserException e) {
        e.printStackTrace();
    }

    textView.setText(" \nIP --> " + ip);

}
4

1 回答 1

0

再次仔细阅读异常名称并尝试理解它的含义:

Network on main thread exception

这意味着您正在执行网络操作,就像任何其他 IO 操作一样,在主线程(阅读:UI 线程)上等待硬件响应需要几毫秒的时间来处理。

所以这意味着你阻塞了 UI 线程,让你的应用程序滞后并运行缓慢,没有人想要这样。

只需使用几种不同的线程方法之一。最常见的是AsyncTask,但如果您想进一步探索,您可以研究用于较低级别交互的线程、用于活动生命周期的加载器(通过一些不错的自动数据处理触摸进行管理)或用于更高级别多线程控制的执行器。

于 2013-02-17T14:01:40.553 回答