私はSwiftプロジェクトに取り組んでおり、APIを大量に消費する必要があります。すべてが正常に機能していますが、場合によっては(20分の1)、Code=-1001 "The request timed out."
APIの呼び出し中にエラーが発生しました。
私はAlamofireを使用しています。 APIを呼び出すためのコードを添付しています。
let request = NSMutableURLRequest(URL: url)
request.HTTPMethod = "POST"
request.HTTPBody = myUrlContents.dataUsingEncoding(NSUTF8StringEncoding)
request.timeoutInterval = 15
request.setValue("application/x-www-form-urlencoded", forHTTPHeaderField: "Content-Type")
request.setValue("application/json", forHTTPHeaderField: "Accept")
request.setValue("\(myUrlContents.dataUsingEncoding(NSUTF8StringEncoding)!.length)", forHTTPHeaderField: "Content-Length")
request.setValue("en-US", forHTTPHeaderField: "Content-Language")
Alamofire.request(request)
.validate()
.responseJSON { [weak self] response in
if response.result.isSuccess {
if let result = response.result.value {
print("Result: \(result)")
completion(result: result as! NSDictionary)
}
}
else {
print(response.debugDescription)
}
}
そしてログは
[Request]: <NSMutableURLRequest: 0x18855620> { URL: http://....... (url)}
[Response]: nil
[Data]: 0 bytes
[Result]: FAILURE: Error Domain=NSURLErrorDomain Code=-1001 "The request timed out." UserInfo={NSErrorFailingURLStringKey=http://.....(url) NSErrorFailingURLKey=http://.....(url), NSLocalizedDescription=The request timed out., _kCFStreamErrorDomainKey=4, NSUnderlyingError=0x18a08900 {Error Domain=kCFErrorDomainCFNetwork Code=-1001 "(null)" UserInfo={_kCFStreamErrorDomainKey=4, _kCFStreamErrorCodeKey=-2102}}}
[Timeline]: Timeline: { "Request Start Time": 493582123.103, "Initial Response Time": 493582138.254, "Request Completed Time": 493582138.254, "Serialization Completed Time": 493582138.256, "Latency": 15.151 secs, "Request Duration": 15.151 secs, "Serialization Duration": 0.002 secs, "Total Duration": 15.153 secs }
エラーを回避するためにタイムアウト期間を増やすことができることはわかっています。しかし、エラーがスローされる実際の理由を知りたいのです。私のAPIはどれもデータを返すのに2秒以上かかりません。次に、15.151秒の遅延が表示される理由。
バックエンドでLAMPスタックを使用しています。どんな助けでもいただければ幸いです。
Code = -1001「リクエストがタイムアウトしました。」というエラーが発生しました。私はいくつかのことを試みました。何も機能しませんでした。最後に、問題は、リクエスト本文でサーバーに送信しているパラメーターの形式が間違っている(値は問題ありませんがタイプが間違っている)ことにあることがわかりました。そのため、サーバーがリクエストを処理できなかったため、リクエストがタイムアウトしていました。他に何も機能しない場合は、それを確認できます。
同じ問題が発生しました。 GETリクエストを使用していますが、[:]の使用が間違っていることがわかりました。 GETリクエストではnilを使用し、POSTリクエスト)では[:]を使用する必要があります