【发布时间】:2017-12-08 01:16:45
【问题描述】:
我正在使用一个将授权密钥放在标头中的 API,它在 Postman 中运行良好:
这是我的代码:
let url = Requests.listCities(withLanguage: .en)
let headers: HTTPHeaders = [ "Authorization": "pmJAdo5N26WW74kCEy6RRvIdCScFCbAtKc2o0FNy"]
Alamofire.request(url, method: .get, parameters: nil, encoding: URLEncoding.default, headers: headers)
.validate(contentType: [MIMEType.JSON])
.responseJSON {response in
completion(response)
}
回复是:
SUCCESS: {
error = Unauthorized;
status = failed;
}
是我做错了还是在请求期间省略了Authorization?
这是请求调试:
$ curl -v \
-H "Accept-Language: en;q=1.0, ar-US;q=0.9" \
-H "Authorization: pmJAdo5N26WW74kCEy6RRvIdCScFCbAtKc2o0FNy" \
-H "User-Agent: skinup/1.0 (appname; build:1; iOS 10.3.1) Alamofire/4.5.0" \
-H "Accept-Encoding: gzip;q=1.0, compress;q=0.5"
【问题讨论】:
-
您确定在邮递员和应用程序上使用相同的 URL 吗?
-
如果您使用 JSONEncoding.default 而不是 URLEncoding.default 并删除 .validate(contentType: [MIMEType.JSON]) 行怎么办?
-
您完全按照 Alamofire 的示例进行操作,所以应该没问题。我会在服务器或本地代理上调试实际的 HTTP 流量——这可以快速解决此类问题。
-
你能把网址发一下,我可以和真人核对一下
-
@Maddyヅヅ 抱歉无法共享密钥。