Сообщение Android HTTPs не работает на новых устройствахJAVA

Программисты JAVA общаются здесь
Ответить
Anonymous
 Сообщение Android HTTPs не работает на новых устройствах

Сообщение Anonymous »

Я обновил свой сервер App Engine для работы только с безопасными HTTP-запросами (HTTPS), добавив строку «secure: Always» в файл app.yaml.
Все работало нормально, я мне удалось получить ответ от сервера моего приложения с моим приложением (работающим на Android 4.1.2), но сегодня я обнаружил, что на устройствах 4.4.2 я получаю следующую ошибку:

Код: Выделить всё

06-04 20:11:29.501: W/System.err(21158): javax.net.ssl.SSLPeerUnverifiedException: No peer certificate
06-04 20:11:29.504: W/System.err(21158):    at com.android.org.conscrypt.SSLSessionImpl.getPeerCertificates(SSLSessionImpl.java:146)
06-04 20:11:29.505: W/System.err(21158):    at org.apache.http.conn.ssl.AbstractVerifier.verify(AbstractVerifier.java:93)
06-04 20:11:29.505: W/System.err(21158):    at org.apache.http.conn.ssl.SSLSocketFactory.createSocket(SSLSocketFactory.java:388)
06-04 20:11:29.505: W/System.err(21158):    at org.apache.http.impl.conn.DefaultClientConnectionOperator.openConnection(DefaultClientConnectionOperator.java:165)
06-04 20:11:29.506: W/System.err(21158):    at org.apache.http.impl.conn.AbstractPoolEntry.open(AbstractPoolEntry.java:164)
06-04 20:11:29.506: W/System.err(21158):    at org.apache.http.impl.conn.AbstractPooledConnAdapter.open(AbstractPooledConnAdapter.java:119)
06-04 20:11:29.506: W/System.err(21158):    at org.apache.http.impl.client.DefaultRequestDirector.execute(DefaultRequestDirector.java:360)
06-04 20:11:29.507: W/System.err(21158):    at org.apache.http.impl.client.AbstractHttpClient.execute(AbstractHttpClient.java:555)
06-04 20:11:29.507: W/System.err(21158):    at org.apache.http.impl.client.AbstractHttpClient.execute(AbstractHttpClient.java:487)
06-04 20:11:29.507: W/System.err(21158):    at org.apache.http.impl.client.AbstractHttpClient.execute(AbstractHttpClient.java:465)
Это код клиента, отвечающий за отправку JSON с HTTP-запросом на публикацию:

Код: Выделить всё

static private String getJson(String json,String url){
HttpClient httpClient = new DefaultHttpClient();

String responseString="";
try {
HttpPost request = new HttpPost("https://XXXXXX.appspot.com/XXXX/XXXX");
StringEntity params =new StringEntity(json, "UTF-8");
request.addHeader("content-type", "application/json");
request.setEntity(params);
HttpResponse response = httpClient.execute(request);
HttpEntity entity = response.getEntity();
responseString = EntityUtils.toString(entity, "UTF-8");

}catch (Exception ex) {
ex.printStackTrace();
// handle exception here
} finally {
httpClient.getConnectionManager().shutdown();
}
return responseString;
}
Я подозреваю, что этот способ отправки HTTP-запросов несколько неверен на новых устройствах (это единственная причина, о которой я могу думать, поскольку на моем устройстве он работает отлично, но на более новых устройствах устройства это не так)
Я также пытался создать свой объект HttpClient, используя этот метод (который, как я видел, иногда устраняет проблему), но это совсем не помогло:

Код: Выделить всё

static private HttpClient createHttpClient()
{
HttpParams params = new BasicHttpParams();
HttpProtocolParams.setVersion(params, HttpVersion.HTTP_1_1);
HttpProtocolParams.setContentCharset(params, HTTP.DEFAULT_CONTENT_CHARSET);
HttpProtocolParams.setUseExpectContinue(params, true);

SchemeRegistry schReg = new SchemeRegistry();
schReg.register(new Scheme("http", PlainSocketFactory.getSocketFactory(), 80));
schReg.register(new Scheme("https", SSLSocketFactory.getSocketFactory(), 443));
ClientConnectionManager conMgr = new ThreadSafeClientConnManager(params, schReg);

return new DefaultHttpClient(conMgr, params);
}
Что можно попробовать дальше?

Подробнее здесь: https://stackoverflow.com/questions/240 ... er-devices
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «JAVA»