在我的应用程序中,我正在通过SSL与Web服务进行通信。因为我使用默认情况下不受android支持的多部分实体,所以我包括以下库:
服务器使用由android支持的权限签名的证书。这适用于大多数设备。今天我的一个用户(Android 2.2 Motorola Defy)发给我一个包含以下内容的日志:
W/System.err( 2328): Caused by: java.lang.NullPointerException
W/System.err( 2328): at org.apache.harmony.xnet.provider.jsse.OpenSSLSocketFactoryImpl.createSocket(OpenSSLSocketFactoryImpl.java:83)
W/System.err( 2328): at org.apache.http.conn.ssl.SSLSocketFactory.createSocket(SSLSocketFactory.java:375)
W/System.err( 2328): at org.apache.http.impl.conn.DefaultClientConnectionOperator.openConnection(DefaultClientConnectionOperator.java:168)
W/System.err( 2328): at org.apache.http.impl.conn.AbstractPoolEntry.open(AbstractPoolEntry.java:164)
W/System.err( 2328): at org.apache.http.impl.conn.AbstractPooledConnAdapter.open(AbstractPooledConnAdapter.java:119)
W/System.err( 2328): at org.apache.http.impl.client.DefaultRequestDirector.execute(DefaultRequestDirector.java:352)
W/System.err( 2328): at org.apache.http.impl.client.AbstractHttpClient.execute(AbstractHttpClient.java:555)
W/System.err( 2328): at org.apache.http.impl.client.AbstractHttpClient.execute(AbstractHttpClient.java:487)
W/System.err( 2328): at org.apache.http.impl.client.AbstractHttpClient.execute(AbstractHttpClient.java:465)
W/System.err( 2328): at my.api.Client.sendRequest(Client.java)
...
我无法在我的设备上重现这一点,我不知道为什么会这样。我查看了OpenSSLSocketFactoryImpl的源代码,并且NullPointerException可以来自的唯一点是因为sslParameters
是null
。您是否知道我在代码中可以做些什么来解决此异常?
如果您不知道如何解决问题,但想知道如何询问向我发送日志的用户,请同时回答。 当他试图通过https访问网站时,我已经问过他的浏览器是否显示错误消息。我收到后立即将答复附在此处。
答案 0 :(得分:0)
回溯并不完全匹配,但如果您的用户使用代理服务器,您可能希望查看您的HttpClient版本是否具有针对此错误的修复程序:http://code.google.com/p/android/issues/detail?id=5255