我正在使用Alamofire发出HTTP请求,该请求从Heroku上运行的Rails应用程序返回JSON。
进行HTTP GET调用时,我得到了这个NSError客户端:
Error Domain=NSURLErrorDomain Code=-1005 "The operation couldn’t be completed
(NSURLErrorDomain error -1005.)
" UserInfo=0x1700e6a00
{
NSErrorFailingURLStringKey=https://********.herokuapp.com/api/workouts.json,
NSErrorFailingURLKey=https://********.herokuapp.com/api/workouts.json,
_kCFStreamErrorDomainKey=4,
_kCFStreamErrorCodeKey=-4,
NSUnderlyingError=0x17025c920 "The operation couldn’t be completed. (kCFErrorDomainCFNetwork error -1005.)"
}
错误-1005是kCFURLErrorNetworkConnectionLost
。
在Heroku日志中,我得到了:
heroku[router]: sock=client at=error code=H18
desc="Request Interrupted"
method=GET path="/api/workouts.json"
host=********.herokuapp.com
request_id=826f4f74-a497-4462-a70b-cc5d352ef7b4
fwd="162.246.8.76"
dyno=web.1 connect=1ms service=0ms status=503 bytes=0
2015-01-15T03:30:15.428551+00:00 app[web.1]:
Started GET "/api/workouts.json"
for 162.246.xxx.xxx at 2015-01-15 03:30:15 +0000
需要注意的重要部分是sock=client
,这意味着请求在客户请求时被中断。
其他终端(例如sign_in
和sign_up
)会返回200 OK
预期的有效负载。所以Rails App正在开发其他端点。
另请注意,curl在命令行上按预期工作:
curl -X GET 'https://********.herokuapp.com/api/workouts.json?email=****&token=****'
答案 0 :(得分:1)
也许它会帮助某人:在我的情况下,我错误地发送了一个空字典作为参数:
var dictParams = [String: String]()
Manager.sharedInstance
.request(.GET, "\(K_API_MAIN_URL)\(k_API_XXXXXX)?access_token=\(strToken)", parameters: dictParams, encoding: .JSON)
解决方案是发送nil而不是上面的dictParams。
Manager.sharedInstance
.request(.GET, "\(K_API_MAIN_URL)\(k_API_XXXXXX)?access_token=\(strToken)", parameters: nil, encoding: .JSON)