0

我们开发了 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()
4

0 回答 0