我们开发了asp.net Web API。在Web API控制器中,有一些过滤器可以生成HttpResponseMessage作为响应。这些API正在被IOS设备应用程序使用。 API中的所有操作都返回HttpResponseMessage。如果Filter执行时没有任何错误,则执行正确执行的操作并在IOS代码中获取HttpResponseMessage。但是如果在过滤器中出现任何异常情况,说令牌无效,则HttpResponseMessage无法在IOS中获取。为什么会发生这种情况? 在Fiddler和REST Client中测试,我可以看到从操作和过滤器生成的HttpResponseMessage(如果失败)。如果Filter失败,IOS会收到nil响应。有什么建议吗? (我不是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()