NullPointerException при создании SSL-сокета

В моем приложении я общаюсь с веб-сервисом по SSL. Поскольку я использую составную сущность, которая по умолчанию не поддерживается 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, заключается в том, что sslParameters является null, У вас есть идея, что я могу сделать в своем коде, чтобы обойти это исключение?

Если вы не знаете, как решить проблему, но знаете, что спросить у пользователя, отправившего мне журнал, пожалуйста, также оставьте ответ. Я уже спросил его, показывает ли его браузер сообщения об ошибках, когда он пытается получить доступ к веб-сайту через https. Я добавлю ответ здесь, как только получу его.

1 ответ

Трассировка не является точным соответствием, но если ваш пользователь использует прокси-сервер, вы можете посмотреть, есть ли в вашей версии HttpClient исправление этой ошибки: http://code.google.com/p/android/issues/detail?id=5255

Другие вопросы по тегам