NSURLSession返回的响应与浏览器返回的响应不同,为什么? [英] NSURLSession returns different response than browser would, why?
本文介绍了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屋!
查看全文