因此,我向Bing图像搜索发送了一个基本的auth请求,以获取一些图像数据,它运行得很好,直到我更新到最新版本的Alamofire (1.3 -> 2.0.2),这是我不得不做的,因为它甚至与XCode 7不太兼容。
总之,这是我的代码:
let credentials = ":\(Settings.bingApiKey)"
let plainText = credentials.dataUsingEncoding(NSUTF8StringEncoding, allowLossyConversion: false)
let base64 = plainText!.base64EncodedStringWithOptions(NSDataBase64EncodingOptions(rawValue: 0))
manager = Alamofire.Manager.sharedInstance
manager!.session.configuration.HTTPAdditionalHeaders = [
"Authorization": "Basic \(base64)"
]
let url = NSURL(string: Settings.bingImageApi + "&Query=" + keyword + "&$top=15&$skip=" + String(skip))!
manager!
.request(.POST, url, parameters: nil, encoding: .JSON)
.responseJSON { request, response, result in
...我发现了一个错误:
失败:错误Domain=NSCocoaErrorDomain Code=3840“字符0周围的无效值。UserInfo={NSDebugDescription=Invalid值围绕字符0。}不支持您提供的授权类型。只支持Basic和OAuth,
发布于 2015-09-21 07:34:39
当我从Alamofire 1.x移动到2.x时,我也遇到了同样的问题。
我找到的一个解决办法(这很有效)是在执行请求时传递标头:
let headers = ["Authorization": "Basic \(base64)"]
Alamofire.request(.POST, url, parameters: nil, encoding: .JSON, headers: headers)有关更多信息,您可以查看文档。
发布于 2015-09-21 08:13:00
请阅读http://ste.vn/2015/06/10/configuring-app-transport-security-ios-9-osx-10-11/“( ATS )允许应用程序在其Info.plist文件中添加声明,指定需要安全通信的域。ATS可以防止意外泄露,提供安全的默认行为,并且易于采用。无论您是在创建新应用程序还是更新现有应用程序,都应该尽快采用ATS。”
发布于 2015-09-21 15:26:09
错误的第一部分是由于您在响应中没有收到有效的JSON。您可以使用response、responseData或responseString来帮助调试。
错误的第二部分是由于设置标头的方式。在创建会话配置之后,不能设置Authorization头。您可以创建自己的会话配置和自己的Manager,也可以在request中传递Authorization头。
https://stackoverflow.com/questions/32688546
复制相似问题