如果连接了 Socket.io,Alamofire 请求总是失败并显示“请求超时”
Posted
技术标签:
【中文标题】如果连接了 Socket.io,Alamofire 请求总是失败并显示“请求超时”【英文标题】:Alamofire request always fails with "The request timed out" if Socket.io is connected 【发布时间】: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 上报告了类似的问题,但没有答案。
我不知道我做错了什么!任何帮助将不胜感激
【问题讨论】:
【参考方案1】:我能够通过更改 alamofire 参数编码来解决此问题。
默认情况下,如果您没有传递任何编码参数,Alamofire 会将编码设置为URLEncoding
。
将URLEncoding
用于GET
和DELETE
请求。
对所有其他请求使用JSONEncoding.default
(API 应该对此提供支持)。
我仍然不确定为什么它在没有套接字的情况下工作并且没有在套接字打开的情况下工作。
【讨论】:
以上是关于如果连接了 Socket.io,Alamofire 请求总是失败并显示“请求超时”的主要内容,如果未能解决你的问题,请参考以下文章
android studio连接io.socket:sokect.io-client服务器的条件