在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连接到服务器尤其重要)。
答案 0 :(得分:4)
我们能够通过以下方式解决这个问题:
1)在Android端添加this solution
2)调整我们的自定义服务器如何服务其公钥(这对于使Marshmallow连接到服务器尤其重要)。