1

KSOAP2 を使用して非同期 Web サービス (サーバーは何も返さない) を呼び出しています。Web サービス呼び出しは既に成功しています。サーバーから確認できますが、HttpTransportSE.call は例外をスローし、アプリをクラッシュさせました。

私のコードは次のとおりです。

envelope.bodyOut = soap;
    envelope.dotNet = false;
    MarshalDouble md = new MarshalDouble();
    md.register(envelope);


        HttpTransportSE androidHttpTransport = new HttpTransportSE(url);
        androidHttpTransport.debug = true;
        try {
            androidHttpTransport.call(null, envelope);
        } catch (IOException e) {
            e.printStackTrace();
        } catch (XmlPullParserException e) {
            e.printStackTrace();
        }

エラーログは次のとおりです。

01-04 17:25:05.930: E/Trace(17787): error opening trace file: No such file or directory (2)
01-04 17:25:06.145: E/SensorManager(17787): thread start
01-04 17:25:19.145: E/AndroidRuntime(17787): FATAL EXCEPTION: AsyncTask #2
01-04 17:25:19.145: E/AndroidRuntime(17787): java.lang.RuntimeException: An error occured while executing doInBackground()
01-04 17:25:19.145: E/AndroidRuntime(17787):    at android.os.AsyncTask$3.done(AsyncTask.java:299)
01-04 17:25:19.145: E/AndroidRuntime(17787):    at java.util.concurrent.FutureTask$Sync.innerSetException(FutureTask.java:273)
01-04 17:25:19.145: E/AndroidRuntime(17787):    at java.util.concurrent.FutureTask.setException(FutureTask.java:124)
01-04 17:25:19.145: E/AndroidRuntime(17787):    at java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:307)
01-04 17:25:19.145: E/AndroidRuntime(17787):    at java.util.concurrent.FutureTask.run(FutureTask.java:137)
01-04 17:25:19.145: E/AndroidRuntime(17787):    at android.os.AsyncTask$SerialExecutor$1.run(AsyncTask.java:230)
01-04 17:25:19.145: E/AndroidRuntime(17787):    at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1076)
01-04 17:25:19.145: E/AndroidRuntime(17787):    at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:569)
01-04 17:25:19.145: E/AndroidRuntime(17787):    at java.lang.Thread.run(Thread.java:856)
01-04 17:25:19.145: E/AndroidRuntime(17787): Caused by: java.lang.IllegalArgumentException: size <= 0
01-04 17:25:19.145: E/AndroidRuntime(17787):    at java.io.BufferedInputStream.<init>(BufferedInputStream.java:94)
01-04 17:25:19.145: E/AndroidRuntime(17787):    at org.ksoap2.transport.HttpTransportSE.call(HttpTransportSE.java:219)
01-04 17:25:19.145: E/AndroidRuntime(17787):    at org.ksoap2.transport.HttpTransportSE.call(HttpTransportSE.java:114)
01-04 17:25:19.145: E/AndroidRuntime(17787):    at com.oracle.bpm.mobile.fragment.PSIRFragment.callBPMProcessAcceleratorAdapter(PSIRFragment.java:447)
01-04 17:25:19.145: E/AndroidRuntime(17787):    at com.oracle.bpm.mobile.fragment.PSIRFragment.access$1(PSIRFragment.java:368)
01-04 17:25:19.145: E/AndroidRuntime(17787):    at com.oracle.bpm.mobile.fragment.PSIRFragment$CallPSIRMobileAdapterTask.doInBackground(PSIRFragment.java:364)
01-04 17:25:19.145: E/AndroidRuntime(17787):    at com.oracle.bpm.mobile.fragment.PSIRFragment$CallPSIRMobileAdapterTask.doInBackground(PSIRFragment.java:1)
01-04 17:25:19.145: E/AndroidRuntime(17787):    at android.os.AsyncTask$2.call(AsyncTask.java:287)
01-04 17:25:19.145: E/AndroidRuntime(17787):    at java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:305)
01-04 17:25:19.145: E/AndroidRuntime(17787):    ... 5 more

誰も理由を知っていますか?ksoap を使用して非同期 Web サービスを呼び出すにはどうすればよいですか? ありがとう。

4

1 に答える 1

0

HttpTransportSE.javaのコードを確認しましたが、応答を防ぐ方法がないようです。したがって、この問題を修正するには、Webサービスを同期に変更し、OKなどを返す必要があります。KSOAP2がこれを修正することを願っています。

于 2013-01-05T09:03:30.903 に答える