AlamoFire POST工作但返回NSURLErrorDomain错误

问题描述 投票:0回答:1

我正在使用AlamoFire将JSON发布到我的Web服务,并且该帖子成功运行并且值被提交到数据库,但AlamoFire返回NSURLErrorDomain,然后显示我的“提交失败”消息。我在下面的代码中做错了什么?

//AlamoFire POST
    var request = URLRequest(url: NSURL.init(string: URL)! as URL)
    request.httpMethod = "POST"
    request.setValue("application/json", forHTTPHeaderField: "Content-Type")
    request.timeoutInterval = 10 // secs
    request.httpBody = try! JSONSerialization.data(withJSONObject: myJson, options: [])

    Alamofire.request(request).responseJSON {
        (response) in
        log.info("HTTP RESPONSE: \(response.result)")
        if response.result.isSuccess {
            self.alertControllerMsg(msgStyle: UIAlertControllerStyle.alert,msgTitle: "Success", msgBody: "Update Delivered", cancelLbl: "", actionLbl: "Dismiss", complete: {
                self.view.endEditing(true)                    
                self.activityIndicator.stopAnimating()
                self.sendBtn.isEnabled = true
            })
        } else if response.result.isFailure {
            let error : Error = response.result.error!
            log.error(error)
            self.alertControllerMsg(msgStyle: UIAlertControllerStyle.alert,msgTitle: "Error", msgBody: "Update Failed. Please try again.", cancelLbl: "", actionLbl: "Dismiss", complete: {
                self.activityIndicator.stopAnimating()
                self.sendBtn.isEnabled = true
            })
        }
    }

编辑:这是完整的错误消息:

Error Domain=NSURLErrorDomain Code=-1001 "The request timed out." UserInfo={NSUnderlyingError=0x170643540 {Error Domain=kCFErrorDomainCFNetwork Code=-1001 "(null)" UserInfo={_kCFStreamErrorCodeKey=-2102, _kCFStreamErrorDomainKey=4}}, NSErrorFailingURLStringKey=http://{{URL.REDACTED}}/odata/Updates, NSErrorFailingURLKey=http://{{URL.REDACTED}}/odata/Updates, _kCFStreamErrorDomainKey=4, _kCFStreamErrorCodeKey=-2102, NSLocalizedDescription=The request timed out.}
swift http-post alamofire
1个回答
0
投票

我发现问题实际上是在服务器端。除了HTTP BODY之外,Web服务还在接收URL参数。 Alamofire不喜欢我将此参数附加到URL上。它必须是如何编码的,因为类似的调用在Fiddler中起作用,但不是通过Alamofire起作用。我计划重新处理Web服务以删除查询字符串参数。

© www.soinside.com 2019 - 2024. All rights reserved.