【问题标题】:Android Retrofit Causes Socket Timeout ExceptionAndroid Retrofit 导致 Socket 超时异常
【发布时间】:2013-06-30 16:01:16
【问题描述】:

我正在使用 Android Galaxy S3 (/Nexus 7) 设备上的改造库对运行 Struts2 的 tomcat 服务器进行 POST 调用。 POST 调用失败。 tomcat 日志显示 Socket 超时异常。

使用完全相同的标头通过 curl 完成的相同 POST 没有任何问题。我使用 charles 代理验证了线路上的数据是否匹配。

有关调试此问题的任何提示/想法。

后调用如下

@POST(Constants.URL_GET_ORDER_LIST_BASE)
   void getCardOrderList(@Body GetOrderListRequest getOrderListRequest, Callback<GetOrderListResponse> cbGetOrderListResponse);

如果我需要添加更多信息来更好地解释这一点,请告诉我。

【问题讨论】:

    标签: android http curl struts2 retrofit


    【解决方案1】:

    将 Square 的 OKHTTP 库添加到 libs 文件夹中解决了该问题。

    【讨论】:

    • 我在每次使用改造库的替代 POST 调用时都遇到了超时问题。添加 OKHTTP jar 文件解决了这个问题。谢谢!
    • 错误答案!我有同样的问题,我不知道如何继续。请详细说明包含库的步骤(jar 文件?gradle 依赖项?)。请填写您的答案。 -1
    【解决方案2】:

    我也遇到了 SocketTimeoutExceptions。请注意始终在您的 POST 调用中添加最后的斜线。

    例子:

    不好

    @POST("/customers")
    

    @POST("/customers/")
    

    我的错误就是这样:)

    【讨论】:

    • 我经常超时。在看到你的答案并添加最后的斜线之后,问题似乎消失了。你能进一步解释一下吗?为什么添加最后的斜线很重要?
    • programmers.stackexchange.com/a/187006 最后的斜线表示列表响应(没有强制要求)。我不明白为什么它会影响超时错误的频率。
    • GET 请求呢?