我们开发了 asp.net Web API。在 Web API 控制器中有生成 HttpResponseMessage 作为响应的过滤器。这些 API 被 IOS 设备应用程序使用。API 中的所有操作都返回 HttpResponseMessage。如果 Filter 执行没有任何错误,则执行正确执行的操作并在 IOS 代码中获取 HttpResponseMessage。但是,如果过滤器中发生任何异常情况说令牌无效,则 HttpResponseMessage 无法在 IOS 中获取。为什么会发生这种情况?在 Fiddler 和 REST 客户端中测试,我可以看到从操作以及过滤器(如果失败)生成的 HttpResponseMessage。如果过滤器失败,IOS 将获得零响应。有什么建议吗?(我不是 IOS 人,但 IOS 团队无法解决这个问题。)
更新:
let postDataTask : NSURLSessionDataTask = session.dataTaskWithRequest(request) { (data, responce, error) -> Void in
if (error == nil)
{
let strData = NSString(data: data!, encoding: NSUTF8StringEncoding)
let _ : NSError?
var json : NSDictionary!
do
{
json = try NSJSONSerialization.JSONObjectWithData(data!, options: .MutableLeaves) as? NSDictionary
}
catch _ as NSError
{}
var issucceeded : Bool = false
print("Responce - \(json)")
if(json != nil)
{
issucceeded = true
// if((json.valueForKey("RESPONSE")) != nil)
// {
// if(json.valueForKey("RESPONSE") as! NSString == "Success")
// {
// issucceeded = true
// }
// }
postCompleted(succeeded: issucceeded, responseDict: json)
}
else // Responce is not in proper JSON format
{
postCompleted(succeeded: false, responseDict: ["HasErrors":"1","ErrorMessage":k_Alert_24,"TryAgain":"True"])
}
}
else
{
postCompleted(succeeded: false, responseDict: ["HasErrors":"1","ErrorMessage":k_Alert_24,"TryAgain":"True"])
}
}
postDataTask.resume()