2016-12-10 10 views
1

ヘッダーフィールドにトークン値があるPOST Webサービスがあります
この値はどのようにして読むことができますか?
私はグーグルが、すべての答えは、ちょうどここで私は別のファイル でそれを呼び出すと、私は後でWebサービスAFNetworking swiftのヘッダー応答のトークンの値を取得

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

私はあなたのコードをネットワーク要求をしていることを示すことができますか? – ozgur

+0

@ozgurはここに私のコード –

答えて

1

ためdidReciveDataFromRegisterWebServiceでアクセスヘッダーと使用トークンをしたいというのが私の登録機能である
ヘッダフィールドの設定値のためでありますなぜAFNetworkingを使用していますか? Objective-Cにこのライブラリをたくさん使いましたが、Swiftに書かれていて、非常によく維持されているのでSwiftが出て以来、私はAlamofireに変更しました。

これはあなたに役立ちます(テストされていません)。あなたの完了ハンドラ内 :

if let response = dataTask.response as? NSHTTPURLResponse { 

    if let headerFieldValue = response.allHeaderFields["YOUR_HEADER_FIELD"] as? String { 

     // do somthing 
    } 
} 

ここではAlamofireで1 response headerFieldにアクセスする方法の1つの簡単な例です。 HTTPURLResponseにはというDictionaryプロパティがあり、そこからトークン値にアクセスできます。ここに私はこれをキャスト

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 
     } 

} 
+0

あなたのコードは動作しません しかし、私はalamofireにあなたにあまりにもありがとうありがとう –

+0

は、彼らはhttpのボディを持っている投稿要求のための良いですか? –

関連する問題