Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ssl/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android RESTLet SSL空指针_Android_Ssl_Restlet - Fatal编程技术网

Android RESTLet SSL空指针

Android RESTLet SSL空指针,android,ssl,restlet,Android,Ssl,Restlet,几天来我一直在尝试如何解决我的问题,但没有成功 我只是想执行RESTlet HTTPS请求。 代码非常简单,因为我只有一个问题: @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); System.setProperty("java.net.preferI

几天来我一直在尝试如何解决我的问题,但没有成功

我只是想执行RESTlet HTTPS请求。 代码非常简单,因为我只有一个问题:

@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);

    System.setProperty("java.net.preferIPv6Addresses", "false");

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

    System.out.println("VERIFICO IL TOKEN: ");
    ClientResource clientResource = new ClientResource(
            "https://www.googleapis.com/oauth2/v1/tokeninfo?access_token=lalala");

    Representation rep = clientResource.get();
}
restlet给出的理由是:

Caused by: Communication Error (1001) - Error while processing a connection
原因:

Caused by: java.lang.NullPointerException
at org.apache.harmony.xnet.provider.jsse.ClientSessionContext$HostAndPort.hashCode(ClientSessionContext.java:214)
at java.util.HashMap.put(HashMap.java:393)
我在网上读到一些关于android的错误,但我找不到任何解决方法

有什么想法吗? 我使用的是Restlet 2.1 RC5

完整的堆栈跟踪是:

08-19 13:43:23.911: E/AndroidRuntime(30053): FATAL EXCEPTION: main
08-19 13:43:23.911: E/AndroidRuntime(30053): java.lang.RuntimeException: Unable to start activity ComponentInfo{com.example.helloandroid/com.example.helloandroid.MainActivity}: Communication Error (1001) - Error while processing a connection
08-19 13:43:23.911: E/AndroidRuntime(30053):    at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2787)
08-19 13:43:23.911: E/AndroidRuntime(30053):    at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2803)
08-19 13:43:23.911: E/AndroidRuntime(30053):    at android.app.ActivityThread.access$2300(ActivityThread.java:135)
08-19 13:43:23.911: E/AndroidRuntime(30053):    at android.app.ActivityThread$H.handleMessage(ActivityThread.java:2136)
08-19 13:43:23.911: E/AndroidRuntime(30053):    at android.os.Handler.dispatchMessage(Handler.java:99)
08-19 13:43:23.911: E/AndroidRuntime(30053):    at android.os.Looper.loop(Looper.java:144)
08-19 13:43:23.911: E/AndroidRuntime(30053):    at android.app.ActivityThread.main(ActivityThread.java:4937)
08-19 13:43:23.911: E/AndroidRuntime(30053):    at java.lang.reflect.Method.invokeNative(Native Method)
08-19 13:43:23.911: E/AndroidRuntime(30053):    at java.lang.reflect.Method.invoke(Method.java:521)
08-19 13:43:23.911: E/AndroidRuntime(30053):    at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:858)
08-19 13:43:23.911: E/AndroidRuntime(30053):    at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:616)
08-19 13:43:23.911: E/AndroidRuntime(30053):    at dalvik.system.NativeStart.main(Native Method)
08-19 13:43:23.911: E/AndroidRuntime(30053): Caused by: Communication Error (1001) - Error while processing a connection
08-19 13:43:23.911: E/AndroidRuntime(30053):    at org.restlet.resource.ClientResource.doError(ClientResource.java:611)
08-19 13:43:23.911: E/AndroidRuntime(30053):    at org.restlet.resource.ClientResource.handleInbound(ClientResource.java:1201)
08-19 13:43:23.911: E/AndroidRuntime(30053):    at org.restlet.resource.ClientResource.handle(ClientResource.java:1068)
08-19 13:43:23.911: E/AndroidRuntime(30053):    at org.restlet.resource.ClientResource.handle(ClientResource.java:1043)
08-19 13:43:23.911: E/AndroidRuntime(30053):    at org.restlet.resource.ClientResource.handle(ClientResource.java:949)
08-19 13:43:23.911: E/AndroidRuntime(30053):    at org.restlet.resource.ClientResource.get(ClientResource.java:657)
08-19 13:43:23.911: E/AndroidRuntime(30053):    at com.example.helloandroid.MainActivity.onCreate(MainActivity.java:30)
08-19 13:43:23.911: E/AndroidRuntime(30053):    at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1069)
08-19 13:43:23.911: E/AndroidRuntime(30053):    at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2751)
08-19 13:43:23.911: E/AndroidRuntime(30053):    ... 11 more
08-19 13:43:23.911: E/AndroidRuntime(30053): Caused by: java.lang.NullPointerException
08-19 13:43:23.911: E/AndroidRuntime(30053):    at org.apache.harmony.xnet.provider.jsse.ClientSessionContext$HostAndPort.hashCode(ClientSessionContext.java:214)
08-19 13:43:23.911: E/AndroidRuntime(30053):    at java.util.HashMap.put(HashMap.java:393)
08-19 13:43:23.911: E/AndroidRuntime(30053):    at org.apache.harmony.xnet.provider.jsse.ClientSessionContext.putSession(ClientSessionContext.java:190)
08-19 13:43:23.911: E/AndroidRuntime(30053):    at org.apache.harmony.xnet.provider.jsse.ClientHandshakeImpl.unwrap(ClientHandshakeImpl.java:308)
08-19 13:43:23.911: E/AndroidRuntime(30053):    at org.apache.harmony.xnet.provider.jsse.SSLRecordProtocol.unwrap(SSLRecordProtocol.java:413)
08-19 13:43:23.911: E/AndroidRuntime(30053):    at org.apache.harmony.xnet.provider.jsse.SSLEngineImpl.unwrap(SSLEngineImpl.java:478)
08-19 13:43:23.911: E/AndroidRuntime(30053):    at javax.net.ssl.SSLEngine.unwrap(SSLEngine.java:383)
08-19 13:43:23.911: E/AndroidRuntime(30053):    at org.restlet.ext.ssl.internal.ReadableSslChannel.onDrain(ReadableSslChannel.java:114)
08-19 13:43:23.911: E/AndroidRuntime(30053):    at org.restlet.engine.io.Buffer.process(Buffer.java:553)
08-19 13:43:23.911: E/AndroidRuntime(30053):    at org.restlet.engine.io.Buffer.process(Buffer.java:668)
08-19 13:43:23.911: E/AndroidRuntime(30053):    at org.restlet.engine.io.ReadableBufferedChannel.read(ReadableBufferedChannel.java:172)
08-19 13:43:23.911: E/AndroidRuntime(30053):    at org.restlet.engine.io.Buffer.fill(Buffer.java:391)
08-19 13:43:23.911: E/AndroidRuntime(30053):    at org.restlet.engine.connector.InboundWay.onFill(InboundWay.java:278)
08-19 13:43:23.911: E/AndroidRuntime(30053):    at org.restlet.engine.io.Buffer.process(Buffer.java:597)
08-19 13:43:23.911: E/AndroidRuntime(30053):    at org.restlet.engine.io.Buffer.process(Buffer.java:668)
08-19 13:43:23.911: E/AndroidRuntime(30053):    at org.restlet.engine.connector.Way.processIoBuffer(Way.java:477)
08-19 13:43:23.911: E/AndroidRuntime(30053):    at org.restlet.engine.connector.InboundWay.processIoBuffer(InboundWay.java:353)
08-19 13:43:23.911: E/AndroidRuntime(30053):    at org.restlet.engine.connector.Way.onSelected(Way.java:430)
08-19 13:43:23.911: E/AndroidRuntime(30053):    at org.restlet.engine.connector.ConnectionController.controlConnections(ConnectionController.java:105)
08-19 13:43:23.911: E/AndroidRuntime(30053):    at org.restlet.engine.connector.ConnectionController.doRun(ConnectionController.java:156)
08-19 13:43:23.911: E/AndroidRuntime(30053):    at org.restlet.engine.connector.Controller.run(Controller.java:158)
08-19 13:43:23.911: E/AndroidRuntime(30053):    at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:441)
08-19 13:43:23.911: E/AndroidRuntime(30053):    at java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:305)
08-19 13:43:23.911: E/AndroidRuntime(30053):    at java.util.concurrent.FutureTask.run(FutureTask.java:137)
08-19 13:43:23.911: E/AndroidRuntime(30053):    at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1068)
08-19 13:43:23.911: E/AndroidRuntime(30053):    at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:561)
08-19 13:43:23.911: E/AndroidRuntime(30053):    at java.lang.Thread.run(Thread.java:1102)

似乎您正在使用内部Restlet连接器,尽管您调用了:

Engine.getInstance().getRegisteredClients().clear();
Engine.getInstance().getRegisteredClients().add(new HttpsClientHelper(null));
您应该确保尝试以下方法:

Engine.getInstance().getRegisteredClients().clear();
Engine.getInstance().getRegisteredClients().add(new org.restlet.ext.net.HttpClientHelper(null));

你使用的是安卓<2.2吗?似乎是你的错误,并说它已在2.2中修复。这里是关于老机器人的解决方法:我读过,但我使用的是安卓2.2。我在emulator和我的htc deviceNote中都得到了相同的错误,即Restlet的内部HTTP连接器在2.1 RC5中不是完全稳定的。我们为即将发布的2.1 RC6修复了几个错误,但是只有2.1.0应该修复其余的错误,特别是HTTPS通信。好的,谢谢!那是我的错误