【问题标题】:Authorization header using Alamofire使用 Alamofire 的授权标头
【发布时间】: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ヅヅ 抱歉无法共享密钥。

标签: ios alamofire


【解决方案1】:

您可以将 Alamofire 的标头设置为 URLRequest。所以你可以这样做:

    var urlRequest = URLRequest(url: URL(string: "your URL")!)
    urlRequest.httpMethod = HTTPMethod.get.rawValue
    urlRequest = try! URLEncoding.default.encode(urlRequest, with: nil)
    urlRequest.setValue("pmJAdo5N26WW74kCEy6RRvIdCScFCbAtKc2o0FNy", forHTTPHeaderField: "Authorization")

    Alamofire.request(urlRequest).responseJSON(completionHandler: {
        response in

        //code below
        completion(response)
    })

也许它会解决你的问题;)

【讨论】:

    猜你喜欢
    • 2016-07-31
    • 2017-07-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-09-04
    • 1970-01-01
    • 2020-06-03
    相关资源
    最近更新 更多