发布方法 HTTPHeader 中的 Alamofire 5.1 更新问题,使用 alamofire 的网络调用
Posted
技术标签:
【中文标题】发布方法 HTTPHeader 中的 Alamofire 5.1 更新问题,使用 alamofire 的网络调用【英文标题】:Alamofire 5.1 update issue in post method HTTPHeader, network call using alamofire 【发布时间】:2020-06-28 10:41:48 【问题描述】:我正在使用 Api 管理器进行通用网络调用,只需获取 Api 管理器的实例并访问 Api Manger 类中定义的 pos 或 get 函数。 现在我将我的 pod Alamofire 4.7 更新为 Alamofire 5.1。面对问题, 问题是在旧版本 HTTPHeader 类型是 String:String 所以我在控制器中创建了一个字典并传递给函数。但现在我需要添加自定义 HTTPHeader 例如 let header: HTTPHeader = ["abc":"xyz"] 但不可能在每个班级都这样做。
API 管理器功能
func postRequest (urlString: String!, isAlertShow: Bool, parameters: Parameters, header : HTTPHeaders, successCallback : @escaping (Data) -> Void, errorCallBack : @escaping (String) -> Void) -> Void
if !Reachability.isConnectedToNetwork()
print("Internet Connection not Available!")
errorCallBack("Internet Connection not Available!")
return
else
print("Internet Connection Available!")
if isAlertShow
SKActivityIndicator.show("Loading...", userInteractionStatus: false)
print(header)
print(urlString!)
print(parameters)
Alamofire.request(urlString, method: .post, parameters: parameters, encoding: JSONEncoding.default, headers: header).responseJSON response in
print(response)
SKActivityIndicator.dismiss()
if let JSON = response.result.value as? [String: Any]
let statusCode = response.response?.statusCode
if statusCode == 200
successCallback(response.data!)
else
let errorMsg = JSON["error"]
if errorMsg != nil
errorCallBack(errorMsg as! String)
else
let errotxt = JSON["message"]
errorCallBack(errotxt as! String)
else
errorCallBack(MSG)
我调用 Api 函数的视图控制器
var roDictionary = [String:String]()
var bodyDict = [String:Any]()
ApiManager.shared.postRequest(urlString: BASE_URL + SUBMIT_RO, isAlertShow: true, parameters: bodyDict, header: roDictionary, successCallback: (response) in
// Get response as Data
, errorCallBack: (error) in
print (error)
self.showAlert(title: ALERT, message: error)
)
那么现在我如何将字典作为 Alamofire 5.1 的 HTTPHeader 传递,那么这个变化呢 响应.结果.值 请任何人根据我的实现将我的 Api Manger 帖子更改为 Switch。
【问题讨论】:
【参考方案1】:我认为对于Alamofire
5.x 版本,如果你想为你的HTTPHeaders
添加一个字典,你可以使用他们的init with dictionary 方法。
HTTPHeaders.init(dictionary: [String : String])
在这里你可以传递你的字典。 它还有其他几个初始化器,例如
HTTPHeaders.init(headers: [HTTPHeader])
您可以在其中专门创建一个HTTPHeader
并使用HTTPHeader
数组填充
【讨论】:
以上是关于发布方法 HTTPHeader 中的 Alamofire 5.1 更新问题,使用 alamofire 的网络调用的主要内容,如果未能解决你的问题,请参考以下文章
如何使用 QT WebEngine 发送 HTTPHeader?
优雅设计封装基于Okhttp3的网络框架:HttpHeader接口设计实现 及 ResponseRequest封装实现
如何将令牌设置为 Java 中获取请求的 HTTPHeader?