Android Parse实现无法验证自定义服务器主机名

时间:2016-05-25 06:32:13

标签: android parse-platform hostname

Parse上初始化Android时,我可以在以下情况下成功连接到Parse服务器:
1)我没有指定服务器URL或
2)我将服务器URL设置为Parse服务器。

因为我们打算最终将数据从Parse迁移到不同的主机,所以我们希望连接到不同的服务器URL。 但是,当我尝试指定一个不同的服务器URL(https://api.ourhostname.com/1/)重定向(充当代理)到Parse服务器时,该应用程序无法完全连接到服务器。从iOS项目实现时,此服务器URL工作正常。但是,在Android等效项上实现时:

Parse.initialize(new Parse.Configuration.Builder(this)
        .applicationId(APP_ID)
        .clientKey(CLIENT_KEY)
        .server("https://api.ourhostname.com/1/")
        .build()
    );

我收到了i / o失败:

05-24 21:46:55.319 7140-7140/com.ourapp W/System.err: com.parse.ParseRequest$ParseRequestException: i/o failure
05-24 21:46:55.324 7140-7140/com.ourapp W/System.err:     at com.parse.ParseRequest.newTemporaryException(ParseRequest.java:290)
05-24 21:46:55.324 7140-7140/com.ourapp W/System.err:     at com.parse.ParseRequest$2.then(ParseRequest.java:145)
05-24 21:46:55.324 7140-7140/com.ourapp W/System.err:     at com.parse.ParseRequest$2.then(ParseRequest.java:139)
05-24 21:46:55.324 7140-7140/com.ourapp W/System.err:     at bolts.Task$15.run(Task.java:917)
05-24 21:46:55.324 7140-7140/com.ourapp W/System.err:     at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1112)
05-24 21:46:55.324 7140-7140/com.ourapp W/System.err:     at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:587)
05-24 21:46:55.324 7140-7140/com.ourapp W/System.err:     at java.lang.Thread.run(Thread.java:818)
05-24 21:46:55.324 7140-7140/com.ourapp W/System.err: Caused by: javax.net.ssl.SSLPeerUnverifiedException: Cannot verify hostname: api.ourhostname.com
05-24 21:46:55.329 7140-7140/com.ourapp W/System.err:     at android.net.SSLCertificateSocketFactory.verifyHostname(SSLCertificateSocketFactory.java:242)
05-24 21:46:55.329 7140-7140/com.ourapp W/System.err:     at android.net.SSLCertificateSocketFactory.createSocket(SSLCertificateSocketFactory.java:486)
05-24 21:46:55.329 7140-7140/com.ourapp W/System.err:     at com.android.okhttp.Connection.upgradeToTls(Connection.java:1226)
05-24 21:46:55.329 7140-7140/com.ourapp W/System.err:     at com.android.okhttp.Connection.connect(Connection.java:1183)
...

在网络浏览器中,我可以访问我们的自定义服务器网址,该网址在浏览器中受信任且有效,这意味着它不是自签名的。

有没有其他人从他们的Android项目中遇到过这个问题,以及有关如何成功获取Parse SDK以连接到自定义服务器URL的任何建议?

更新: 我们能够通过以下方式解决这个问题:
1)在Android端添加this solution 2)调整我们的自定义服务器如何服务其公钥(这对于使Marshmallow连接到服务器尤其重要)。

1 个答案:

答案 0 :(得分:4)

我们能够通过以下方式解决这个问题:
1)在Android端添加this solution 2)调整我们的自定义服务器如何服务其公钥(这对于使Marshmallow连接到服务器尤其重要)。