【问题标题】:AlamoFire POST works but is returning NSURLErrorDomain errorAlamoFire POST 有效,但返回 NSURLErrorDomain 错误
【发布时间】:2018-06-04 15:06:54
【问题描述】:

我正在使用 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】:

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

【讨论】:

    猜你喜欢
    • 2015-11-18
    • 2018-09-02
    • 1970-01-01
    • 1970-01-01
    • 2016-01-09
    • 1970-01-01
    • 2017-03-19
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多