我知道有人问过类似的问题,但这个问题略有不同。
我们有一个应用程序可以与我们的服务器建立一些 HTTP 连接。
在 LG Nexus 5X 或 Sumsung Galaxy 5 上运行应用程序时,使用我们的 3 个 WiFi 路由器中的任何一个,连接 超时(“SocketTimeoutException:超时”由于“SocketException:套接字关闭”)。 如果我们使用蜂窝网络、设备之间的网络共享或连接的笔记本电脑上的模拟器,连接不会超时到相同的(有问题的)WiFi 路由器。
需要指出的是,路由器连接到不同的 ISP。
有没有人经历过类似的事情或有过这样的想法?
谢谢
最佳答案
已解决:尝试使用 GET 而不是 POST(使用约 4K 字节的 JSON 主体)似乎工作正常。因此,在与服务器端 tcpdump 进行 session 后,结果表明请求确实到达 服务器,但它“已损坏”。前 ~300 字节和最后 ~1000 字节确实到达服务器,但中间 ~2500 字节丢失(可能是由于某些服务提供商基础设施/整形器或其他原因).
无论如何,将 OKHttpClient 实例的缓冲区大小(为其提供一个新的 SocketFactory)降低到 512,就可以达到目的。
感谢所有试图提供帮助的人。
关于使用 Retrofit/OkHttpClient 的 WiFi 上的 Android SocketTimeoutException,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40508162/