헤더 필드에 토큰 값이있는 POST 웹 서비스가
있습니다.이 값을 어떻게 읽을 수 있습니까?
나는 봤지만 모든 답변은 헤더 필드의 설정 값에 대한 것입니다.
여기에 다른 파일에서 호출하는 등록 기능이 있으며 didReciveDataFromRegisterWebService에서 헤더에 액세스하고 나중에 웹 서비스에 토큰을 사용하고 싶습니다.
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()
}
왜 사용하고 AFNetworking
있습니까? 나는이 lib를 많이 사용 Objective-C
했지만 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
속성이 호출 allHeaderFields
됩니다. 여기에 캐스팅String
Alamofire.request("https://serviceURL.de", method: .post, parameters: parameters, encoding: JSONEncoding.default, headers: nil).responseJSON { (response:DataResponse<Any>) in
if let headerFieldValue = response.response?.allHeaderFields["YOUR_HEADER_FIELD"] as? String {
// do somthing
}
}
이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.
침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제
몇 마디 만하겠습니다