Использование пользовательской версии приложения App Engine на Android

Я пытаюсь использовать версию приложения App Engine, отличную от него, в приложении для Android. Версия приложения App Engine по умолчанию – 1, и я загрузил новую версию 2 и хочу протестировать ее с помощью приложения Android.

Корневой путь по умолчанию к экземпляру приложения выглядит следующим образом:

xxx.appspot.com 

Оба экземпляра доступны (или должны быть), используя:

 https://1.xxx.appspot.com // version 1 https://2.xxx.appspot.com // version 2 

Первая проблема – это тестирование через браузер. В Chrome вы не можете проверить его, из-за сообщения об ошибке. Your connection is not private . Похоже на выпуск сертификата для *.appspot.com :

 NET::ERR_CERT_COMMON_NAME_INVALID 

Вы можете обойти это с помощью Firefox и добавить данный сайт в качестве доверенного. Поэтому предположим, что вторая версия протестирована через браузер, время для ее тестирования с помощью приложения для Android.

Я изменил корневой URL конечной точки, передавая новый URL-адрес строителю:

 builder.setRootUrl(https://2.xxx.appspot.com); 

Это не удается:

 java.io.IOException: Hostname '2.xxx.appspot.com' was not verified at com.android.okhttp.Connection.upgradeToTls(Connection.java:1026) at com.android.okhttp.Connection.connect(Connection.java:963) at com.android.okhttp.internal.http.HttpEngine.connect(HttpEngine.java:405) 

Быстрый поиск по SO и быстрое и грязное решение (я бы не использовал это в процессе производства, даже не тестировал приложение. Конечно, проверка имени хоста должна выполняться, например, с помощью стандартного верификатора, а если значение по умолчанию возвращает false, используя мой резерв верификатор):

 HttpsURLConnection.setDefaultHostnameVerifier(new HostnameVerifier() { @Override public boolean verify(String hostname, SSLSession session) { return true; } }); 

И конечный результат:

 com.google.api.client.googleapis.json.GoogleJsonResponseException: 404 Not Found at com.google.api.client.googleapis.services.json.AbstractGoogleJsonClientRequest.newExceptionOnError(ProGuard:113) at com.google.api.client.googleapis.services.json.AbstractGoogleJsonClientRequest.set(ProGuard:40) at com.google.api.client.googleapis.services.AbstractGoogleClientRequest$1.interceptResponse(ProGuard:312) 

Независимо от того, какую версию я использую, она заканчивается 404. Единственным допустимым URL-адресом является https://xxx.appspot.com Я уверен, что метод, который я пытаюсь вызвать, существует в конечной точке, потому что я могу назвать его с помощью Firefox ,

Любые предложения по тестированию новой версии приложения App Engine с Android-приложением? Является ли ошибка проверки сертификата ошибкой, или это правильное поведение, которое *.appspot.com соответствует только xxx.appspot.com но не соответствует x.xxx.appspot.com ?

Очевидно, решение было в документации:

Обратите внимание, что в апреле 2013 года Google прекратил выдавать SSL-сертификаты для доменов с двумя подстановочными знаками, размещенных на appspot.com (например, .appspot.com). Если вы полагаетесь на такие URL-адреса для доступа HTTPS к вашему приложению, пожалуйста, измените любую логику приложения, чтобы использовать «-dot-» вместо «.». Например, для доступа к версии «1» приложения «myapp» используйте « https://1-dot-myapp.appspot.com » вместо « https://1.myapp.appspot.com ». Если вы продолжаете использовать « https://1.myapp.appspot.com », сертификат не будет соответствовать, что приведет к ошибке для любого User-Agent, который ожидает, что URL и сертификат будут соответствовать точно.

Короче, мне пришлось заменить 2. 2-dot-