【发布时间】:2015-07-16 08:52:04
【问题描述】:
尝试使用 Bing API 在 Swift 中检索图像,但没有成功。根据我从 stackoverflow 上的其他类似问题以及 Bing API 文档 (https://onedrive.live.com/view.aspx?resid=9C9479871FBFA822!112&app=Word&authkey=!ANNnJQREB0kDC04) 中收集到的信息,您必须将请求发送到 API,并将 Authorization 标头设置为 Bing API 的 base64 编码版本帐户密钥。所以我尝试了以下方法:
let url = NSURL(string: Settings.bingImageApi + "&Query=" + keyword)!
let plainText = bingAPIKey.dataUsingEncoding(NSUTF8StringEncoding, allowLossyConversion: false)
let base64 = plainText!.base64EncodedStringWithOptions(nil)
let manager = Alamofire.Manager.sharedInstance
manager.session.configuration.HTTPAdditionalHeaders = [
"Authorization": "Basic \(base64)"
]
manager
.request(.POST, url, parameters: nil, encoding: .JSON)
.responseJSON { (request, response, data, error) -> Void in
println(response)
}
println(error) 语句产生以下内容:
{ status code: 401, headers {
"Access-Control-Allow-Credentials" = false;
"Access-Control-Allow-Headers" = "Content-Type, Authorization, DataServiceVersion, MaxDataServiceVersion";
"Access-Control-Allow-Methods" = "GET, POST, PUT, DELETE, OPTIONS";
"Access-Control-Allow-Origin" = "*";
"Access-Control-Expose-Headers" = "DataServiceVersion, MaxDataServiceVersion";
"Access-Control-Max-Age" = 604800;
"Content-Length" = 91;
Date = "Thu, 16 Jul 2015 00:38:34 GMT";
Server = "Microsoft-IIS/8.0";
"Www-Authenticate" = "Basic Realm=\"\"";
"X-Content-Type-Options" = nosniff;
"X-Powered-By" = "ASP.NET";
}
授权通常需要用户名和密码,但在这种情况下,只需要密码即可,而用户名可以为空。我将如何只指定密码值?问题出在我认为的 base64 编码有问题或有问题。
【问题讨论】:
标签: ios swift alamofire bing-api