Alamofire 获取请求

Posted

技术标签:

【中文标题】Alamofire 获取请求【英文标题】:Alamofire get request 【发布时间】:2017-08-01 14:20:00 【问题描述】:

我正在尝试使用以下 alamofire 请求访问 API,并将标头作为参数传递。但它没有发生

let url = "http://192.168.1.42/api/v1/userConfig/8b5dbf7d9bdd40d29472be44efa9b7d3"
let secondTok: String = String(Token.get())


let bear = "Bearer " + secondTok

let param = ["Content-Type" : "application/json","Accept" : "application/json", "Authorization" : bear]



Alamofire.request(url, method: .get , parameters: param , encoding: JSONEncoding.default).responseJSON  response in

【问题讨论】:

怎么了?你有错误吗?您收到的回复是什么? 寻求调试帮助的问题(“为什么这段代码不起作用?”)必须包括所需的行为、特定问题或错误以及在问题本身中重现它所需的最短代码。 请参阅 @987654321 @. 【参考方案1】:

在您的代码中,您正在获取参数。改为将其设置为标题

let url = "http://192.168.1.42/api/v1/userConfig/8b5dbf7d9bdd40d29472be44efa9b7d3"
let secondTok: String = String(Token.get())
let bear = "Bearer " + secondTok
let headers = ["Content-Type" : "application/json","Accept" : "application/json", "Authorization" : bear]

   Alamofire.request(url, method: .get , headers: param , encoding: JSONEncoding.default).responseJSON  response in

【讨论】:

。使用上述 Alamofire 请求访问 api 后,我得到了 json 数据。你能建议任何方法将收到的 json 数据存储到核心数据中并将它们显示到文本字段中。【参考方案2】:

Alamofire 使用 get 方法

Alamofire.request("http://api.androidhive.info/contacts/", method: .get, parameters: nil, encoding: URLEncoding.default, headers: nil).responseJSON  (response:DataResponse<Any>) -> Void in
            switch response.result 
            case .success:
                if let data = response.result.value as? Dictionary<String, AnyObject> 
                    self.array = data["contacts"] as! Array<Dictionary<String, AnyObject>>
                
//                self.data = response.result.value as? [String, AnyObject]
                break
            case .failure:
                print("Error")
            
            if self.array.count > 0 
                self.tableview.reloadData()
            

        

【讨论】:

【参考方案3】:

使用这样的标题授权

let url = "http://192.168.1.42/api/v1/userConfig/8b5dbf7d9bdd40d29472be44efa9b7d3"
let headers: HTTPHeaders = [
        "Authorization": "Bearer " + secondTok!,
        "Accept": "application/json"
     ]
Alamofire.request(url, method: .post, parameters: "" as? [String : AnyObject], encoding: JSONEncoding.default, headers: headers).responseJSON  response in

【讨论】:

它现在可以工作了。我不明白参数的含义:“”作为? [字符串:AnyObject] 空白参数考虑 现在我正在获取 json 数据(大量数据)。我只需要其中的某些东西并将它们存储在 coredata 中。你能推荐一个方法吗? 你想从数据数组或json中得到什么? 请使用它很容易存储在 coredata github.com/3lvis/DATAStack 你只需调用函数并添加数据【参考方案4】:

Alamofire 具有接收标头作为参数的方法。使用它而不是将标头放入参数中。

public func request(
    _ url: URLConvertible,
    method: HTTPMethod = .get,
    parameters: Parameters? = nil,
    encoding: ParameterEncoding = URLEncoding.default,
    headers: HTTPHeaders? = nil)
    -> DataRequest

【讨论】:

以上是关于Alamofire 获取请求的主要内容,如果未能解决你的问题,请参考以下文章

Alamofire 无法使用 php 获取请求

Swift Alamofire HTTP 获取请求

alamofire 499 使用标头和参数发出获取请求时

请求失败时从 AlamoFire 获取 JSON 响应

用 alamofire 快速发送获取请求

如何使用操作查询发出多个 Alamofire 请求