我试图在Android应用程序中使用非默认的app应用程序版本。默认的app应用程序版本是1,我已经上传了一个新的版本2,并希望使用Android应用程序来测试它。
app实例的默认根路径如下:
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)快速搜索,就会有一个快速而肮脏的解决方案(我不会在生产中使用这个,甚至不会测试这个应用程序)。当然,应该执行主机名检查,例如使用默认验证器,如果默认值使用我的后备验证器返回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结尾。唯一有效的网址是https://xxx.appspot.com,我确信我试图调用的方法存在于端点上,因为我可以使用火狐调用它。
对于如何用Android应用测试新的app应用版本,有什么建议吗?证书验证失败是一个错误,还是*.appspot.com只匹配xxx.appspot.com但不匹配x.xxx.appspot.com的正确行为?
发布于 2014-12-15 07:29:44
显然,解决方案是在文档中找到的:
请注意,2013年4月,谷歌停止为托管在appspot.com (即..appspot.com)的双通配符域颁发SSL证书。如果您依赖这样的URL来访问您的应用程序,请将任何应用程序逻辑更改为使用"-dot-“而不是”“。例如,要访问应用程序"myapp“的版本"1”,请使用"https://1-dot-myapp.appspot.com“而不是”https://1.myapp.appspot.com“。如果您继续使用"https://1.myapp.appspot.com“,则证书将不匹配,这将导致期望URL和证书完全匹配的任何用户代理都会出现错误。
简而言之,我不得不用2.替换2-dot-
https://stackoverflow.com/questions/27475447
复制相似问题