0

以下のコードを使用して応答から値を取得していますが、次のエラー Network on main thread exception が発生していますが、ブラウザーで動作しているため、url、name space、method、および soap アクションが正しいことを確認しています、また、 SoapObject と soaSerializationEnvelope の解析でエラーが発生します。そのような問題を解決するにはどうすればよいですか、または SOAP リクエストを解析して優れたアイテムの値を取得する簡単な例があれば

公共ボイドテスト(){

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 に答える