iOS 8和iOS 9上的NSURLSession之间的区别?

时间:2015-09-18 15:09:01

标签: ios swift nsurlsession http-basic-authentication

我有以下代码来验证MediaWiki服务器的iOS应用程序:

let task = NSURLSession.sharedSession()
        task.configuration.HTTPAdditionalHeaders = ["Authorization": "Basic " + base64EncodedCredentials]

        task.dataTaskWithURL(url!) {(data, response, error) in
            dispatch_async(dispatch_get_main_queue(), {

                if data != nil {
                    let result = NSString(data: data!, encoding: NSUTF8StringEncoding)
                    if resultIsValid(result) {
                        //Do authentication stuff
                    } else {
                        self.showLoginErrorMessage()
                    }
                } else {
                    self.showLoginErrorMessage()
                }
            })
            }.resume()

在iOS 8上,这很完美,我收到了一个HTTP 200 OK响应。但是,在iOS 9上,我收到了401未授权。不幸的是,我无法访问服务器以查看它实际收到的内容,而且它位于内部网络上,因此我无法链接到服务器。它使用HTTP基本访问身份验证,因此我假设它应该与具有该身份验证类型的任何其他服务器相同。

从iOS 8到9的API是否有任何可能导致此类问题的变化?例如,可以更改/删除/添加其他默认标题(如内容类型或用户代理)吗?

编辑: 在使用requests.in测试后,我发现通过添加Content-Type,这是iOS 8中标题的一部分,但不是iOS 9中的一部分。在iOS 8中,我仍然可以在不设置Content-Type的情况下获得请求,但它在iOS 9请求中不存在仍然很奇怪。

0 个答案:

没有答案