我有一些POST网络服务,他们在标题栏中有令牌值
我该如何阅读这个值?
我用Google搜索,但所有答案都只是标题字段中的设定值
这是我的注册功能,我在另一个文件中调用它
我想在didReciveDataFromRegisterWebService中使用访问头,并为以后的webservices使用令牌
func register(phone : String) {
let configuration = URLSessionConfiguration.default
let manager = AFURLSessionManager(sessionConfiguration: configuration)
manager.responseSerializer = AFHTTPResponseSerializer()
let req = AFHTTPRequestSerializer().request(withMethod: "POST", urlString: "http://192.168.1.228:8000/gcab/v1/driver/register", parameters: nil, error: nil)
req.setValue("application/x-www-form-urlencoded", forHTTPHeaderField: "Content-Type")
let insideDict = ["phone_number" : phone , "device_id" : DeveloperAssistant.getDeviceID() ]
let insideString = insideDict.convertToString()
let jsonString = "data=\(insideString)"
let jsonPostData = jsonString.data(using: .utf8)
req.httpBody = jsonPostData!
let dataTask = manager.dataTask(with: req as URLRequest) { (response : URLResponse, data : Any?, error : Error?) in
if data != nil {
do{...}
else{
let responseData = WebServiceParser.parseDataToObject(data: dict, type: .register) as! RegisterWebServiceResponse
self.registerDelegate?.didReciveDataFromRegisterWebService!(data: responseData, error: nil, response: nil)
}
print("dict info is : \(dictInfo)")
}catch let erro {
print("erro darim \(erro)")
}
print("we have data ")
}else{
print("we don't have data")
}
}
dataTask.resume()
}
答案 0 :(得分:1)
为什么使用AFNetworking
?我在Objective-C
中经常使用这个lib,但是自从Swift
出来后我改为Alamofire
,因为它是用Swift
编写的,维护得非常好。
这可以帮到你(没有经过测试!)。 在完成处理程序中:
if let response = dataTask.response as? NSHTTPURLResponse {
if let headerFieldValue = response.allHeaderFields["YOUR_HEADER_FIELD"] as? String {
// do somthing
}
}
以下是如何使用response headerField
访问一个Alamofire
的一个简短示例。
HTTPURLResponse
有一个名为Dictionary
的{{1}}属性,您可以从中访问您的令牌值。在这里,我将其转换为allHeaderFields
String