无法使用Alamofire获取数据?

时间:2017-08-16 23:43:04

标签: ios django swift3 get alamofire

我正在尝试从我的Django后端获取iOS应用中的数据。邮递员如果我对以下网址http://127.0.0.1:8000/api/places/categories 执行GET请求,并且参数为Key:"Authorization" Value: "Bearer access_token".,我会收到JSON回复。

在我的应用程序中,我在Alamofire的帮助下做了类似的事情:

let access_token  = "123"
let headers = ["Authorization": "Bearer" + access_token]

Alamofire.request(self.categoriesUrl, method: .get, parameters:nil,encoding: JSONEncoding.default,headers: headers).response { response in
            print("Request: \(response.request)")
            print("Response: \(response.response)")
            print("Error: \(response.error)")

            if let data = response.data, let utf8Text = String(data: data, encoding: .utf8) {
                print("Data: \(utf8Text)")
            }
        }

我收到错误消息未提供授权凭据。我理解这一点,它要求我传递参数,但参数只需要一个令牌。所以我做了这样的事情:

let access_token  = "123"
let params = ["Authorization": "Bearer" + access_token]

Alamofire.request(self.categoriesUrl, method: .get, parameters:params,encoding: JSONEncoding.default,headers: nil).response { response in
            print("Request: \(response.request)")
            print("Response: \(response.response)")
            print("Error: \(response.error)")

            if let data = response.data, let utf8Text = String(data: data, encoding: .utf8) {
                print("Data: \(utf8Text)")
            }
        }

等待一段时间但无法获取数据并出现以下错误:

Response: nil
Error: Optional(Error Domain=NSURLErrorDomain Code=-1001 "The request timed out." UserInfo={NSUnderlyingError=0x61800004b0d0 {Error Domain=kCFErrorDomainCFNetwork Code=-1001 "(null)" UserInfo={_kCFStreamErrorCodeKey=-2102, _kCFStreamErrorDomainKey=4}}, NSErrorFailingURLStringKey=http://127.0.0.1:8000/api/places/categories/, NSErrorFailingURLKey=http://127.0.0.1:8000/api/places/categories/, _kCFStreamErrorDomainKey=4, _kCFStreamErrorCodeKey=-2102, NSLocalizedDescription=The request timed out.})
Data: 

EDIT1: POST MAN SCREENSHOT

2 个答案:

答案 0 :(得分:0)

这很容易修复,我猜你使用的是iOS10或更高版本的操作系统。因此,请拨打http,而不是拨打https,这意味着在iOS10及更高版本中,API调用协议已更改为 http https

答案 1 :(得分:0)

你这里有一个错字:

let params = ["Authorization": "Bearer" + access_token]

你在Bearer之后错过了一个空间。