0

サーブレットで取得リクエストを実行しようとしていますが、通信エラー (1001) - 接続の処理中にエラーが発生しました。

私のコードは非常に単純です:

    Engine.getInstance().getRegisteredClients().clear();
    Engine.getInstance().getRegisteredClients().add(new HttpsClientHelper(null));

    ClientResource cr = new ClientResource(URI);
    cr.setRequestEntityBuffering(true);
    cr.setChallengeResponse(ChallengeScheme.HTTP_BASIC, 
            SensorUpdaterApp.getInstance().GOOGLE_ACCOUNT_EMAIL, 
            SensorUpdaterApp.getInstance().GOOGLE_ACCOUNT_TOKEN);
    DataTableResource resource = cr.wrap(DataTableResource.class);

    Long newId = null;
    try{
        newId = resource.createDataset();
    } catch(Exception e){ e.printStackTrace(); }

logcat で取得したスタック トレースは次のとおりです。

08-16 13:21:24.221: I/org.restlet(11223): Starting the internal [HTTPS/1.1] client
    08-16 13:21:24.311: D/dalvikvm(11223): GC_FOR_MALLOC freed 9361 objects / 434480 bytes in 59ms
    08-16 13:21:24.391: D/dalvikvm(11223): GC_FOR_MALLOC freed 444 objects / 16384 bytes in 54ms
    08-16 13:21:24.471: D/dalvikvm(11223): GC_FOR_MALLOC freed 505 objects / 18800 bytes in 53ms
    08-16 13:21:24.561: D/dalvikvm(11223): GC_FOR_MALLOC freed 703 objects / 26368 bytes in 41ms
    08-16 13:21:24.631: D/dalvikvm(11223): GC_FOR_MALLOC freed 870 objects / 32216 bytes in 41ms
    08-16 13:21:24.911: D/dalvikvm(11223): GC_FOR_MALLOC freed 15029 objects / 968672 bytes in 46ms
    08-16 13:21:25.241: I/org.restlet(11223): A recoverable error was detected (1001), attempting again in 2000 ms.
    08-16 13:21:25.731: D/dalvikvm(11223): GC_FOR_MALLOC freed 24605 objects / 1514848 bytes in 60ms
    08-16 13:21:27.531: I/org.restlet(11223): A recoverable error was detected (1001), attempting again in 2000 ms.
    08-16 13:21:28.491: D/dalvikvm(11223): GC_FOR_MALLOC freed 33569 objects / 1502352 bytes in 78ms
    08-16 13:21:29.821: W/System.err(11223): Communication Error (1001) - Error while processing a connection
    08-16 13:21:29.821: W/System.err(11223):    at org.restlet.resource.ClientResource.doError(ClientResource.java:611)
    08-16 13:21:29.821: W/System.err(11223):    at org.restlet.engine.resource.ClientInvocationHandler.invoke(ClientInvocationHandler.java:236)
    08-16 13:21:29.821: W/System.err(11223):    at $Proxy5.createDataset(Native Method)
    08-16 13:21:29.821: W/System.err(11223):    at com.sensorupdater2.activities.main.CreateNewDatasetAsyncTask.doInBackground(CreateNewDatasetAsyncTask.java:38)
    08-16 13:21:29.821: W/System.err(11223):    at com.sensorupdater2.activities.main.CreateNewDatasetAsyncTask.doInBackground(CreateNewDatasetAsyncTask.java:1)
    08-16 13:21:29.821: W/System.err(11223):    at android.os.AsyncTask$2.call(AsyncTask.java:185)
    08-16 13:21:29.821: W/System.err(11223):    at java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:305)
    08-16 13:21:29.831: W/System.err(11223):    at java.util.concurrent.FutureTask.run(FutureTask.java:137)
    08-16 13:21:29.831: W/System.err(11223):    at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1068)
    08-16 13:21:29.831: W/System.err(11223):    at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:561)
    08-16 13:21:29.831: W/System.err(11223):    at java.lang.Thread.run(Thread.java:1102)
    08-16 13:21:29.831: W/System.err(11223): Caused by: java.lang.NullPointerException
    08-16 13:21:29.831: W/System.err(11223):    at org.apache.harmony.xnet.provider.jsse.ClientSessionContext$HostAndPort.hashCode(ClientSessionContext.java:214)
    08-16 13:21:29.841: W/System.err(11223):    at java.util.HashMap.put(HashMap.java:393)
    08-16 13:21:29.841: W/System.err(11223):    at org.apache.harmony.xnet.provider.jsse.ClientSessionContext.putSession(ClientSessionContext.java:190)
    08-16 13:21:29.841: W/System.err(11223):    at org.apache.harmony.xnet.provider.jsse.ClientHandshakeImpl.unwrap(ClientHandshakeImpl.java:308)
    08-16 13:21:29.841: W/System.err(11223):    at org.apache.harmony.xnet.provider.jsse.SSLRecordProtocol.unwrap(SSLRecordProtocol.java:413)
    08-16 13:21:29.841: W/System.err(11223):    at org.apache.harmony.xnet.provider.jsse.SSLEngineImpl.unwrap(SSLEngineImpl.java:478)
    08-16 13:21:29.841: W/System.err(11223):    at javax.net.ssl.SSLEngine.unwrap(SSLEngine.java:383)
    08-16 13:21:29.841: W/System.err(11223):    at org.restlet.ext.ssl.internal.ReadableSslChannel.onDrain(ReadableSslChannel.java:114)
    08-16 13:21:29.841: W/System.err(11223):    at org.restlet.engine.io.Buffer.process(Buffer.java:553)
    08-16 13:21:29.841: W/System.err(11223):    at org.restlet.engine.io.Buffer.process(Buffer.java:668)
    08-16 13:21:29.841: W/System.err(11223):    at org.restlet.engine.io.ReadableBufferedChannel.read(ReadableBufferedChannel.java:172)
    08-16 13:21:29.841: W/System.err(11223):    at org.restlet.engine.io.Buffer.fill(Buffer.java:391)
    08-16 13:21:29.851: W/System.err(11223):    at org.restlet.engine.connector.InboundWay.onFill(InboundWay.java:278)
    08-16 13:21:29.851: W/System.err(11223):    at org.restlet.engine.io.Buffer.process(Buffer.java:597)
    08-16 13:21:29.851: W/System.err(11223):    at org.restlet.engine.io.Buffer.process(Buffer.java:668)
    08-16 13:21:29.851: W/System.err(11223):    at org.restlet.engine.connector.Way.processIoBuffer(Way.java:477)
    08-16 13:21:29.851: W/System.err(11223):    at org.restlet.engine.connector.InboundWay.processIoBuffer(InboundWay.java:353)
    08-16 13:21:29.851: W/System.err(11223):    at org.restlet.engine.connector.Way.onSelected(Way.java:430)
    08-16 13:21:29.851: W/System.err(11223):    at org.restlet.engine.connector.ConnectionController.controlConnections(ConnectionController.java:105)
    08-16 13:21:29.851: W/System.err(11223):    at org.restlet.engine.connector.ConnectionController.doRun(ConnectionController.java:156)
    08-16 13:21:29.851: W/System.err(11223):    at org.restlet.engine.connector.Controller.run(Controller.java:158)
    08-16 13:21:29.851: W/System.err(11223):    at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:441)
    08-16 13:21:29.851: W/System.err(11223):    ... 5 more
    08-16 13:21:31.181: D/dalvikvm(11223): GC_FOR_MALLOC freed 31659 objects / 1496144 bytes in 101ms
    08-16 13:21:31.181: I/org.restlet(11223): Stopping the internal[HTTPS/1.1] client

私の libs ディレクトリには次のものがあります。

  • gcm.jar
  • org.restlet.ext.httpclient.jar - おそらく役に立たない
  • org.restlet.ext.net.jar - おそらく役に立たない
  • org.restlet.ext.ssl.jar
  • org.restlet.jar

サーバーを他のクライアントでテストしましたが、動作しているようです

何か案は?

4

1 に答える 1

2

作成した HTTPS と HTTPの両方をインポートするだけで機能することがわかったので、試してみることをお勧めします (ただし、どちらをインポートorg.restlet.ext.net.HttpClientHelperするかによって動作が変わることに注意してください)。HttpClientHelper

意図的に使用したい場合はorg.restlet.ext.ssl.HttpsClientHelper、org.jsslutils_1.0 ライブラリもインポートする必要があります。そうしないと、接続が永久にタイムアウトします (少なくとも、Android で Restlet 2.1.0 をテストしたときに見たものです)。

Restlet 2.1.0ダウンロードの readme.txt には、各 JAR の依存関係が示されています。org.restlet.ext.ssl は jsslutils に依存します:

org.restlet.ext.ssl (Restlet 拡張機能 - SSL)
- org.jsslutils_1.0

参考までに、Restlet のダウンロードにはすべての依存ライブラリも含まれているため、そこから入手できます。

これをテストしているときに見つけた他のいくつかのことを次に示します。

  • 正しいコネクタをインポートして使用していることを確認してください (`HttpClientHelper Eclipse をインポートしたとき、4 つの異なるコネクタが提供されました)。Restlet wiki コネクタ ページには、利用可能なサーバー コネクタとクライアント コネクタが一覧表示されています

  • を試してみたところorg.restlet.ext.httpclient.HttpClientHelper、HTTP コネクタが機能するためにすべての依存関係をインポートする必要はないと思います (おそらく、クライアント側の部分しか使用していないためです)。

  • すべての JAR が同じ Restlet リリースのものであることを確認してください。そうしないと、おかしなエラーが発生する可能性があります。

  • コネクタのみをインポートしorg.restlet.ext.httpclient.HttpClientHelper、HTTPS をインポートしない場合は、java.lang.IllegalStateException: Scheme 'https' not registered.

于 2012-12-06T18:30:22.113 に答える