我有一个iOS应用程序,该应用程序有两个带有大型响应对象的请求,并且当连接良好时,通常需要100-200毫秒才能完成。当平均连接速度时,这些请求似乎在大约20%的时间内挂断了,而我却花了30到60秒钟的时间。然后,我将重新启动该应用程序,并在几秒钟后再次尝试该请求,该请求将在预期的时间(100-200 ms)中完成
我已经测试了端点正在与其他客户端(cURL,Postman)查询的api,并且没有任何问题,所以我可以肯定这与我的前端配置有关。我正在使用Alamofire库来处理请求。
以下是其中一个请求的代码:
func login(_ params: [String: String], completion: @escaping (Response<UserResponseSuccess, UserResponseFail>) -> Void) {
Alamofire.request(self.url!, method: .post, parameters: params).responseJSON {
response in
if response.result.isSuccess {
let respJSON: JSON = JSON(response.result.value!)
if response.response?.statusCode == 200 {
// do stuff with json
let resp = UserResponseSuccess()
completion(Response.success(resp))
} else {
logRequestError()
let resp = UserResponseFail()
completion(Response.failure(resp))
}
} else {
logServerError()
let resp = UserResponseFail()
completion(Response.failure(resp))
}
}
}
这是请求日志:
2019-08-17 14:03:16.832462-0600 Debug - foo[17418:3273774] CredStore - performQuery - Error copying matching creds. Error=-25300, query={
class = inet;
"m_Limit" = "m_LimitAll";
ptcl = htps;
"r_Attributes" = 1;
sdmn = "foo.bar.com";
srvr = "foo.bar.com";
sync = syna;
}
$ curl -v \
-X POST \
-H "User-Agent: Debug - foo/1.3 (com.foo.bar.debug; build:4; iOS 12.4.0) Alamofire/4.7.3" \
-H "Content-Type: application/x-www-form-urlencoded; charset=utf-8" \
-H "Accept-Language: en-US;q=1.0" \
-H "Accept-Encoding: gzip;q=1.0, compress;q=0.5" \
-d "email=foo@foo.com&password=bar123" \
"https://rtj.foo.com/users/login"
请求要么立即通过,要么不打入服务器。我可能会出现这些超时,然后重试请求,但我不想掩盖可能的错误。
与wifi相比,这似乎在蜂窝网络上更常发生。
更新:我使用URLSession而不是Alamofire运行了相同的查询,并且收到了相似的结果。查询的错误输出是:
error:
Error Domain=NSURLErrorDomain Code=-1001 "The request timed out."
UserInfo={NSUnderlyingError=0x28228fe10 {Error
Domain=kCFErrorDomainCFNetwork Code=-1001 "(null)" UserInfo= .
{_kCFStreamErrorCodeKey=60, _kCFStreamErrorDomainKey=1}},
NSErrorFailingURLStringKey=https://foo.bar.com/users/login,
NSErrorFailingURLKey=https://foo.bar.com/users/login,
_kCFStreamErrorDomainKey=1, _kCFStreamErrorCodeKey=60,
NSLocalizedDescription=The request timed out.}
版本:Alamofire:4.7.3,Xcode版本:10.3,Swift版本:5