创建SSL-Socket时出现NullPointerException

时间:2011-06-17 10:02:38

标签: android ssl nullpointerexception httpclient

在我的应用程序中,我正在通过SSL与Web服务进行通信。因为我使用默认情况下不受android支持的多部分实体,所以我包括以下库:

  • 的HttpClient-4.1.1.jar
  • 的HttpCore-4.1.jar
  • httpmime-4.1.1.jar

服务器使用由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可以来自的唯一点是因为sslParametersnull。您是否知道我在代码中可以做些什么来解决此异常?

如果您不知道如何解决问题,但想知道如何询问向我发送日志的用户,请同时回答。 当他试图通过https访问网站时,我已经问过他的浏览器是否显示错误消息。我收到后立即将答复附在此处。

1 个答案:

答案 0 :(得分:0)

回溯并不完全匹配,但如果您的用户使用代理服务器,您可能希望查看您的HttpClient版本是否具有针对此错误的修复程序:http://code.google.com/p/android/issues/detail?id=5255