2015-05-08 35 views
2

我正在使用的服务器在HTTP状态消息中返回错误消息。例如,它将返回“400用户已存在”而不是“400错误请求”。如何检索Alamofire发出的请求的状态消息?

我想在Alamofire调用的响应方法中访问字符串“User already exists”。但是,我找不到任何方法来访问此字符串。

我发现StackOverflow上这个问题已经:Swift Alamofire: How to get the HTTP response status code

不幸的是,没有人给出了问题的答案。 :(

这里就是Chrome会显示错误所在:从服务器JSON格式

Status message

+0

您可以通过在Alamofire回调中使用response对象的'statusCode'属性来访问HTTP响应代码本身。尽管这是一个'Int',而不是'String'。如果您确定错误字符串正在被发回,那么我建议您使用类似[POSTMAN]的内容(https://chrome.google.com/webstore/detail/postman-rest-client/fdmmgilgnpjigdojojpjoooidkmcomcm?hl=zh-CN) )检查标题和正文以找出位置。这将帮助您了解如何访问它。 –

+0

@ matthew.healy:我上传了一张在Chrome中显示状态消息的图片。我不认为这是标题或正文的一部分,但我肯定可能是错的。 – thedayturns

+0

啊,很奇怪。不知道我能做些什么来帮助。看起来你可以从响应中得到的唯一东西是(整数)'statusCode'和一个标题字典。 (请参阅[此链接](https://developer.apple.com/library/prerelease/ios/documentation/Cocoa/Reference/Foundation/Classes/NSHTTPURLResponse_Class/index.html)) –

回答

0

返回响应,然后我想你就可以得到相应的地位

我使用PHP codeigniter..from实现那个东西在我的反应就像是

$response['status'] = 'user_already_exists'; 
$this->response($response, 400); 

现在迅速,你可以去W¯¯ ith

Alamofire.request(.POST,URL, parameters:parameters) .responseJSON 
{ 
      (request, response, data, error) in 

      var json = JSON(data!) //I've used swiftyJSON for reading json response 
      let status = json["status"].stringValue 
      println("Status : \(status)") 
} 

希望这可以帮助你。

+0

不幸的是,我没有拥有这台服务器。 – thedayturns

+0

@thedayturns好吧..我只得到状态代码为400,而不是使用alamofire的消息。你能得到像“400用户已经存在”的整体状态吗? – iRiziya

+0

不,这是我所要求的。 – thedayturns

2

我会建议尝试打印出所有可能的数据字段,你看到你可以找到。请尝试下面的例子,看看是否有任何亮光。

let URL = NSURL(string: "your/url/to/somewhere")! 
let parameters = ["foo": "bar"] 

Alamofire.request(.POST, URL, parameters: parameters) 
    .response { request, response, data, error in 
     println("Request: \(request)") 
     println("Response: \(response)") 
     println("Error: \(error)") 

     if let data = data as? NSData { 
      println("Data: \(NSString(data: data, encoding: NSUTF8StringEncoding)!)") 
     } 
}