2

ksoap 2 を使用して Web サービスに接続する J2ME アプリケーションにタイムアウトを追加する必要があります。

http://ksoap2.sourceforge.net/doc/api/org/ksoap2/transport/HttpTransport.htmlで可能な擬似タイムアウトとして説明されている方法を試しましたが、このデバイスでは機能しないようです。

別のスレッドで接続を実行し、タイマーが起動した場合はそれを強制終了しますが、http://developers.sun.com/mobility/midp/articles/threading2/ (これは組み込みデバイスなので、バックグラウンドで無数のスレッドをブロックしたままにしておくことはできません)。ブロックする接続を開こうとするのは 1 回であるため、boolean メソッドの poll は使用できません。

システム タイムアウトはデバイス モーダル間で異なるようで、私の目的には長すぎます。

うまくいくかもしれない何かについて考えている人はいますか?

4

3 に答える 3

2

setSoTimeout()メソッドを持つSocketクラスを使用することになりました。

于 2009-09-25T19:59:34.097 に答える
2

HttpTransportSE クラスのタイムアウトをサポートするために、KSoap2 v2.5.2 に変更を加えたことは言うまでもありません。タイムアウトが発生すると、SocketTimeoutException がスローされます。

jar と src の両方がこの URL http://www.lightsoft.se/?p=707にあります。

于 2011-01-14T07:30:19.083 に答える
1

完全に機能するコンピューターを扱っているわけではないことに注意してください。一部のデバイスでは、ネットワーク操作、特に TCP 接続を中断することはできません。

これが私たちの仕事です。

  1. 接続を確立する前に、短い間隔 (たとえば 2 秒) で別の監視タイマー スレッドを作成します。
  2. 監視スレッドでは、制限時間に達していない場合、進行中のふりをするメッセージをデバイスに送信できます。
  3. 特定の時間制限に達した場合は、Thread.interrupt() を送信して他のスレッドを中断してみてください。この呼び出しは MIDP で利用できます。
  4. 接続スレッドで、中断された場合は終了します。

これはすべてのエミュレーターでうまく機能しますが、一部の電話では 5 分後まで接続スレッドで例外が発生しません。

于 2009-09-24T20:36:50.130 に答える