2017-06-08 12 views
-2

私はalarmofireを使用してPOSTリクエストを実装しています。Swift:jsonボディのalamofire投稿

目標として投稿することです:

curl -X POST --header 'Content-Type: application/json' 
    --header 'Accept: application/json' -d '{"dest":"Place","reason":"Reason","carId":1,"starttime":1496975475840,"departmentId":3,"distance":0.0,"driverId":1}' 
    'http://localhost:8080/serviceCar/v1_0/placeOrder?access_token=25621648-1da5-438e-a52c-f927e2c59de4' 

URLがhttp://localhost:8080/serviceCar/v1_0/placeOrder

であると私が注文クラスを持って、どのように私は、リクエストボディとしてオブジェクトを投稿しても、フォームデータとしてトークンを送ることができますか?

+0

私達にあなたのAlamofire要求コードを表示します。 –

答えて

0

Hereが必要な場合があります。

提供されたParameterEncodingタイプがニーズを満たしていない場合は、独自のカスタムエンコードを作成できます。 JSON文字列配列をリクエストにエンコードするカスタムJSONStringArrayEncoding型を作成する方法の簡単な例を次に示します。

struct JSONStringArrayEncoding: ParameterEncoding { 
    private let array: [String] 

    init(array: [String]) { 
     self.array = array 
    } 

    func encode(_ urlRequest: URLRequestConvertible, with parameters: Parameters?) throws -> URLRequest { 
     var urlRequest = try urlRequest.asURLRequest() 

     let data = try JSONSerialization.data(withJSONObject: array, options: []) 

     if urlRequest.value(forHTTPHeaderField: "Content-Type") == nil { 
      urlRequest.setValue("application/json", forHTTPHeaderField: "Content-Type") 
     } 

     urlRequest.httpBody = data 

     return urlRequest 
    } 
} 

これは、要求[from doc]のヘッダを設定する例です:

let user = "user" 
let password = "password" 

var headers: HTTPHeaders = [:] 

if let authorizationHeader = Request.authorizationHeader(user: user, password: password) { 
    headers[authorizationHeader.key] = authorizationHeader.value 
} 

Alamofire.request("https://httpbin.org/basic-auth/user/password", headers: headers) 
    .responseJSON { response in 
     debugPrint(response) 
    } 
関連する問題