Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ios/122.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ios 如何从API发送错误_Ios_Swift_Alamofire - Fatal编程技术网

Ios 如何从API发送错误

Ios 如何从API发送错误,ios,swift,alamofire,Ios,Swift,Alamofire,我正在写一个WEB API 然而,即使在Alamofire请求中的swift代码中存在错误,isSuccess始终等于true 我应该在JSON中发送什么来让Alamofire检测到有错误?is.Failure=true 服务器正在向我发送错误代码404,但看起来总是成功: Alamofire.request(.GET, Constants.Path.rootUrl + "/api/users", parameters: ["username" : usernameString, "

我正在写一个WEB API

然而,即使在Alamofire请求中的swift代码中存在错误,isSuccess始终等于true

我应该在JSON中发送什么来让Alamofire检测到有错误?is.Failure=true

服务器正在向我发送错误代码404,但看起来总是成功:

      Alamofire.request(.GET, Constants.Path.rootUrl + "/api/users", parameters: ["username" : usernameString, "limit":3] , headers: ["tb-token" : userToken!])
            .responseJSON { _, _, result in


                print(result.value)

                switch result {
                case .Success(let JSON):
                    print("Success with JSON: \(JSON)")
                    self.tableView.hidden = false

                    self.resultsDict = result.value as! NSArray

                    let results = result.value
                    let resultsNumber = results!.count

                    self.numberOfResults.text = "Results(\(resultsNumber))"
                    self.numberOfResults.hidden = false

                    self.resultsN = resultsNumber
                    self.loadedMode = true


                    self.tableView.reloadData()
                    self.tableView.hidden = false
                case .Failure(let data, let error):
                    print((error as NSError).localizedDescription)
                }

        }
[编辑] 我已经上传到Alamofire 3.0,但我仍然遇到同样的问题。 以下是新代码:

         Alamofire.request(.GET, Constants.Path.rootUrl + "/api/users", parameters: ["username" : usernameString, "limit":3] , headers: ["tb-token" : userToken!])
            .responseJSON { response in


                print(response.request)  // original URL request
                print(response.response) // URL response
                print(response.data)     // server data
                print(response.result)   // result of response serialization


                let results = response.result

                if let JSON = response.result.value {

                    if response.result.isSuccess == true {
                        print("Success with JSON: \(JSON)")
                        self.tableView.hidden = false

                        self.resultsDict = results.value as! NSArray

                        let resultsNumber = results.value!.count

                        self.numberOfResults.text = "Results(\(resultsNumber))"
                        self.numberOfResults.hidden = false

                        self.resultsN = resultsNumber
                        self.loadedMode = true


                        self.tableView.reloadData()
                        self.tableView.hidden = false
                    }
                }
                    else {print("error")}

        }
以下是回复。回复:

Optional(<NSHTTPURLResponse: 0x7fa1bb216a50> { URL: http://teambuilding-adall.rhcloud.com/api/users?limit=3&username=adallo } { status code: 404, headers {
"Access-Control-Allow-Origin" = "*";
Connection = "Keep-Alive";
"Content-Length" = 60;
"Content-Type" = "application/json; charset=utf-8";
Date = "Sat, 10 Oct 2015 23:32:13 GMT";
Etag = "W/\"3c-dR4AnAjVi0TRWls1iKAm7w\"";
"Keep-Alive" = "timeout=15, max=60";
"X-Powered-By" = Express;
} })
[最终编辑]我通过添加以下两行代码解决了这个问题:

.validate(statusCode: 200..<300)
.validate(contentType: ["application/json"])

通过浏览Alamofire GitHub页面以及常规做法,您应该发送一个非200状态代码来指示失败。特定状态代码应与错误的类型或原因相对应


通常,您会发送一个4xx状态代码e.x.400、403、404、409。在此处阅读要发送的状态代码:

添加完整代码添加代码@Johnny您能添加printresponse.response的输出吗?添加到问题中@但是我正在检查isSuccess,它应该只取决于响应代码,而不管内容是什么@埃里克,不是那样的。。我已经添加了代码。