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 获取请求的主要内容,如果未能解决你的问题,请参考以下文章