【问题标题】:Alamofire request always fails with "The request timed out" if Socket.io is connected如果连接了 Socket.io,Alamofire 请求总是失败并显示“请求超时”
【发布时间】:2017-10-01 09:00:05
【问题描述】:

如果连接了 socket.io,Alamofire 没有按预期工作,总是出现 req time out 错误。如果我禁用 Socket.io,Alamofire 就可以工作

这是我遇到的错误

Error Domain=NSURLErrorDomain Code=-1001 "The request timed out." 
UserInfo={NSUnderlyingError=0x60800044c720 
{Error Domain=kCFErrorDomainCFNetwork Code=-1001 "(null)" 
UserInfo={_kCFStreamErrorCodeKey=-2102, _kCFStreamErrorDomainKey=4}},
NSErrorFailingURLStringKey=https://enpoint.json, NSErrorFailingURLKey=https://enpoint.json, 
_kCFStreamErrorDomainKey=4, _kCFStreamErrorCodeKey=-2102, NSLocalizedDescription=The request timed out.}

还有这个

_tcp_connection_write_eof_block_invoke Write close callback received error: [89] Operation canceled

在 git https://github.com/Alamofire/Alamofire/issues/1545 上报告了类似的问题,但没有答案。

我不知道我做错了什么!任何帮助将不胜感激

【问题讨论】:

    标签: ios swift sockets socket.io alamofire


    【解决方案1】:

    我能够通过更改 alamofire 参数编码来解决此问题。 默认情况下,如果您没有传递任何编码参数,Alamofire 会将编码设置为URLEncoding。 将URLEncoding 用于GETDELETE 请求。 对所有其他请求使用JSONEncoding.default(API 应该对此提供支持)。

    我仍然不确定为什么它在没有套接字的情况下工作并且没有在套接字打开的情况下工作。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-08-12
      • 1970-01-01
      • 2015-12-19
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多