NSURLSession返回的响应与浏览器返回的响应不同,为什么? [英] NSURLSession returns different response than browser would, why?

查看:81
本文介绍了NSURLSession返回的响应与浏览器返回的响应不同,为什么?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

任何想法,为什么NSURLSession返回此响应:

Any idea why NSURLSession returns this response:

不支持您提供的授权类型.仅基本和 支持OAuth

The authorization type you provided is not supported. Only Basic and OAuth are supported

let username = "8r6nibK8Pe28WFhjTX1gGb1Rhhhc7xM02v7XKRPedL4"
let password = "8r6nibK8Pe28WFhjTX1gGb1Rhhhc7xM02v7XKRPedL4"
let loginString = NSString(format: "%@:%@", username, password)
let loginData: NSData = loginString.dataUsingEncoding(NSUTF8StringEncoding)!
let base64LoginString = loginData.base64EncodedStringWithOptions(.Encoding64CharacterLineLength)

let config = NSURLSessionConfiguration.defaultSessionConfiguration()
let authString = "Basic \(base64LoginString)"
config.HTTPAdditionalHeaders = ["Authorization" : authString]

let url = NSURL(string: "https://api.datamarket.azure.com/Bing/Search/Image?$format=json&Query='Rambo'+'Oscar'")
let request = NSMutableURLRequest(URL: url!)
request.HTTPMethod = "POST"

let a = NSURLSession(configuration: config).dataTaskWithRequest(request, completionHandler: {data, urlResponse, error in

    if data != nil {

        let str = NSString(data: data!, encoding: NSUTF8StringEncoding)
        print(str)
    } else {
        _ = 7
    }
})

a.resume()

浏览器返回不同的响应,并提供有意义的图像信息.而且我正在使用基本身份验证来发送请求.

Browser returns different response with meaningful image information. And I am using basic authentication to send request.

推荐答案

问题可能是选项:.Encoding64CharacterLineLength.尝试:

The problem may probably the option: .Encoding64CharacterLineLength. try:

let base64LoginString = loginData.base64EncodedStringWithOptions([])

要进行调查,请使用 Charles Proxy 查看请求中的区别. – zaph 10分钟前

To investigate use Charles Proxy to see the difference in the requests. – zaph 10 mins ago

这篇关于NSURLSession返回的响应与浏览器返回的响应不同,为什么?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆