3

SOAPWebサービスにアクセスするためにkSoap2を使用しています。以下の行を実行しているときにjava.net.connectExceptionが発生します

androidHttpTransport.call(Constants.SOAP_ACTION_GET_METHOD_NAME, envelope)   

これは常に発生しているわけではありませんが、場合によっては発生します。これはサーバーへの接続タイムアウトの問題ですか?kSoapで接続タイムアウトを増やす方法は?グーグルしましたが、解決策が見つかりません。誰かが私にこのエラーを修正するための解決策を提案できますか?

Logcatの詳細は次のとおりです。

07-17 14:46:24.800: W/System.err(8103): java.net.ConnectException: failed to connect to www.yahoo.com/175.41.138.237 (port 80) after 20000ms: isConnected failed: ENETUNREACH (Network is unreachable)
07-17 14:46:24.800: W/System.err(8103):     at libcore.io.IoBridge.isConnected(IoBridge.java:214)
07-17 14:46:24.800: W/System.err(8103):     at libcore.io.IoBridge.connectErrno(IoBridge.java:152)
07-17 14:46:24.800: W/System.err(8103):     at libcore.io.IoBridge.connect(IoBridge.java:112)
07-17 14:46:24.800: W/System.err(8103):     at java.net.PlainSocketImpl.connect(PlainSocketImpl.java:192)
07-17 14:46:24.800: W/System.err(8103):     at java.net.PlainSocketImpl.connect(PlainSocketImpl.java:459)
07-17 14:46:24.800: W/System.err(8103):     at java.net.Socket.connect(Socket.java:842)
07-17 14:46:24.800: W/System.err(8103):     at libcore.net.http.HttpConnection.<init>(HttpConnection.java:77)
07-17 14:46:24.800: W/System.err(8103):     at libcore.net.http.HttpConnection.<init>(HttpConnection.java:50)
07-17 14:46:24.800: W/System.err(8103):     at libcore.net.http.HttpConnection$Address.connect(HttpConnection.java:351)
07-17 14:46:24.800: W/System.err(8103):     at libcore.net.http.HttpConnectionPool.get(HttpConnectionPool.java:86)
07-17 14:46:24.810: W/System.err(8103):     at libcore.net.http.HttpConnection.connect(HttpConnection.java:128)
07-17 14:46:24.810: W/System.err(8103):     at libcore.net.http.HttpEngine.openSocketConnection(HttpEngine.java:308)
07-17 14:46:24.810: W/System.err(8103):     at libcore.net.http.HttpEngine.connect(HttpEngine.java:303)
07-17 14:46:24.810: W/System.err(8103):     at libcore.net.http.HttpEngine.sendSocketRequest(HttpEngine.java:282)
07-17 14:46:24.810: W/System.err(8103):     at libcore.net.http.HttpEngine.sendRequest(HttpEngine.java:232)
07-17 14:46:24.810: W/System.err(8103):     at libcore.net.http.HttpURLConnectionImpl.connect(HttpURLConnectionImpl.java:80)
07-17 14:46:24.810: W/System.err(8103):     at org.ksoap2.transport.ServiceConnectionSE.connect(ServiceConnectionSE.java:80)
4

1 に答える 1

1

kSoap で接続タイムアウトを増やす方法は?

HttpTransportSE状況によっては、タイムアウト値を無視するという未解決の問題がまだあるようです。この関連リンクを参照してください。

ただし、これに対する解決策には、既存の の変更が含まれていましたksoap2 API

Lightsoftaiの開発者のおかげでHttpTransportSE、次のコードを使用してタイムアウトを追加できるようになりました。

これには、ksoap2 API バージョン 2.5.2 以降を使用できます。

       /**
       * Creates instance of HttpTransportSE with set url
       *
       * @param url 
       *             the destination to POST SOAP data
       */
         public HttpTransportSE(String url) {
         super(url);
         }

       /**
      * Creates instance of HttpTransportSE with set url
      *
      * @param url
      *            the destination to POST SOAP data
      * @param timeout
      *               timeout for connection and Read Timeouts (milliseconds)
       */
       public HttpTransportSE(String url, int timeout) {
       super(url, timeout);
          }

ここから同じ jar ファイルをダウンロードできます。

ksoap never timeoutも参照してください。

それが役に立てば幸い。

于 2012-07-19T08:04:59.840 に答える