这是我的问题:
我想使用自签名证书在我的服务器上发出 HTTPS 请求。使用 Galaxy S2 (v4.0.3)、Nexus S (4.0.4)、Xperia Ray (4.0.3) 和 Galaxy Ace (2.3.6) 在 WLAN 中运行良好。
在 3G 中测试时,它仅适用于 Galaxy Ace 和 Xperia Ray。在其他人身上,我得到了一个Socket is closed: java.net.SocketException
.
在此页面上,我找到了解决方案。我有一个请求属性Connection : close
。但是没有这个标题,我会得到一个不同的错误:Handshake timeout
.
这些设备有什么不同才能获得这些不同的结果?
对于 https 请求,我使用javax.net.ssl
包。我使用客户端私钥进行请求。
编辑:我使用其他 SIM 卡进行了测试,这很奇怪:使用一张,它适用于 Nexus S,但不适用于 Galaxy S。第二张,适用于所有人。我的结论是:一些运营商可能会限制特定的请求或数据传输。我不知道为什么,我会联系他们以获取更多信息
EDIT2: 此处的解决方案: 如何强制我的应用不使用 3g 数据代理设置