Alamofire returns "The request timed out" 支持分段图片上传,但 Postman 没有问题
Alamofire returns "The request timed out" with multipart image upload, but no problems with Postman
我正在尝试 POST 使用 Alamofire 分段上传图像数据。但是总是returns"The request timed out"错误。
当使用 Postman 尝试相同的 Web 服务时,它可以正常工作。
基本上 Alamofire 一直在尝试一段时间,并且 returns 这个错误,但是使用 Postman 我可以看到响应几乎是立即的并且没有收到超时。
这是我为 post 请求创建的辅助方法:
class func postRequestWithImage(image: UIImage, params : [String : String],success:@escaping (JSON) -> Void, failure:@escaping (NSError) -> Void){
SVProgressHUD.show()
Alamofire.upload(multipartFormData: { (multipartFormData) in
let imageData : Data = UIImageJPEGRepresentation(image, 0.6)!
for (key, value) in params{
multipartFormData.append(value.data(using: String.Encoding.utf8)!, withName: key)
}
multipartFormData.append(imageData, withName: "image")
}, to: WEBSERVICE_URL) { (encodingResult) in
switch encodingResult {
case .success(let upload, _, _):
upload.responseJSON { response in
debugPrint(response)
if response.result.isSuccess{
success(JSON(response.result.value!))
SVProgressHUD.dismiss()
}
else{
failure(response.result.error! as NSError)
}
}
case .failure(let encodingError):
failure(encodingError as NSError)
print(encodingError)
}
}
}
同样的调试响应是:
[Request]: http://website.com/v1/service/
[Response]: nil
[Data]: 0 bytes
[Result]: FAILURE: Error Domain=NSURLErrorDomain Code=-1001 "The request timed out." UserInfo={NSUnderlyingError=0x6080006441a0 {Error Domain=kCFErrorDomainCFNetwork Code=-1001 "(null)" UserInfo={_kCFStreamErrorCodeKey=-2102, _kCFStreamErrorDomainKey=4}}, NSErrorFailingURLStringKey=http://website.com/v1/service/, NSErrorFailingURLKey=http://website.com/v1/service/, _kCFStreamErrorDomainKey=4, _kCFStreamErrorCodeKey=-2102, NSLocalizedDescription=The request timed out.}
[Timeline]: Timeline: { "Request Start Time": 510773039.719, "Initial Response Time": 510773051.183, "Request Completed Time": 510773120.615, "Serialization Completed Time": 510773120.615, "Latency": 11.464 secs, "Request Duration": 80.895 secs, "Serialization Duration": 0.000 secs, "Total Duration": 80.896 secs }
我解决了这个问题。就我而言,这是一个粗心的错误。我在 url 中使用了一个额外的斜线。我将网络 api 更改为不同的文件夹,在 iOS 代码中更改它时我犯了这个错误。
我还对 .htaccess 文件进行了一些更改,因此请求没有给出 404 错误,而是尝试连接到该错误地址。 Web 开发新手会犯的错误
我正在尝试 POST 使用 Alamofire 分段上传图像数据。但是总是returns"The request timed out"错误。 当使用 Postman 尝试相同的 Web 服务时,它可以正常工作。 基本上 Alamofire 一直在尝试一段时间,并且 returns 这个错误,但是使用 Postman 我可以看到响应几乎是立即的并且没有收到超时。
这是我为 post 请求创建的辅助方法:
class func postRequestWithImage(image: UIImage, params : [String : String],success:@escaping (JSON) -> Void, failure:@escaping (NSError) -> Void){
SVProgressHUD.show()
Alamofire.upload(multipartFormData: { (multipartFormData) in
let imageData : Data = UIImageJPEGRepresentation(image, 0.6)!
for (key, value) in params{
multipartFormData.append(value.data(using: String.Encoding.utf8)!, withName: key)
}
multipartFormData.append(imageData, withName: "image")
}, to: WEBSERVICE_URL) { (encodingResult) in
switch encodingResult {
case .success(let upload, _, _):
upload.responseJSON { response in
debugPrint(response)
if response.result.isSuccess{
success(JSON(response.result.value!))
SVProgressHUD.dismiss()
}
else{
failure(response.result.error! as NSError)
}
}
case .failure(let encodingError):
failure(encodingError as NSError)
print(encodingError)
}
}
}
同样的调试响应是:
[Request]: http://website.com/v1/service/
[Response]: nil
[Data]: 0 bytes
[Result]: FAILURE: Error Domain=NSURLErrorDomain Code=-1001 "The request timed out." UserInfo={NSUnderlyingError=0x6080006441a0 {Error Domain=kCFErrorDomainCFNetwork Code=-1001 "(null)" UserInfo={_kCFStreamErrorCodeKey=-2102, _kCFStreamErrorDomainKey=4}}, NSErrorFailingURLStringKey=http://website.com/v1/service/, NSErrorFailingURLKey=http://website.com/v1/service/, _kCFStreamErrorDomainKey=4, _kCFStreamErrorCodeKey=-2102, NSLocalizedDescription=The request timed out.}
[Timeline]: Timeline: { "Request Start Time": 510773039.719, "Initial Response Time": 510773051.183, "Request Completed Time": 510773120.615, "Serialization Completed Time": 510773120.615, "Latency": 11.464 secs, "Request Duration": 80.895 secs, "Serialization Duration": 0.000 secs, "Total Duration": 80.896 secs }
我解决了这个问题。就我而言,这是一个粗心的错误。我在 url 中使用了一个额外的斜线。我将网络 api 更改为不同的文件夹,在 iOS 代码中更改它时我犯了这个错误。
我还对 .htaccess 文件进行了一些更改,因此请求没有给出 404 错误,而是尝试连接到该错误地址。 Web 开发新手会犯的错误