【发布时间】:2018-11-05 15:02:13
【问题描述】:
我真的需要帮助......
我有一个简单的 Android 应用程序,它连接到我的服务器以通过 HTTPS 获取数据。
在我从另一台设备(iOS 或 Android)连接到同一台服务器之前,一切正常。我开始出现超时或连接被拒绝或其他错误,具体取决于我使用的库(有时是 SSL 握手)
我在同一个路由器上尝试了 2 个 android 应用 - 失败
我尝试过 Volley、Retrofit、普通 http 库 - 失败
如果一台设备通过蜂窝网络连接,另一台通过 wifi 连接,则工作正常。但是,我看到即使使用连接到蜂窝网络而不是 wifi 的 2 个设备也失败了。
很容易重现。一个应用程序运行良好。一旦我在另一台设备上进行操作。第一个应用将无法连接。
使用相同 api/server 的 iOS 应用程序运行良好。没有失败
失败时我在安卓应用上运行了wireshark,收到如下信息:
70 47.073286 10.0.0.1 10.0.0.138 ICMP 120 目的地不可达(端口不可达)
似乎是端口问题。我不确定这是服务器问题还是客户端问题。iOS 应用程序运行良好。没有问题。仅限安卓。
我试过了:
System.setProperty("http.keepAlive", "false");
我尝试设置一个 http 标头“connection :close”没有任何效果...
任何想法将不胜感激......
【问题讨论】:
-
这是服务器问题。您的服务器拒绝连接到第二个客户端,因为这是 https 连接,我假设您需要使用一些用户凭据登录到服务器。如果您可以控制服务器架构,我会从那里开始
-
这就是我最初的想法。但是,为什么 iOS 应用程序可以完美运行?
-
您是否在具有相同凭据的两台不同设备上尝试了 iOS 应用,并且运行良好。
-
是的。我们对 iOS 应用程序没有任何问题。
-
不要使用
Connection ,close。这可能会导致问题。
标签: android http keep-alive httpconnection