2016-11-20 12 views
1
{"title":"exampleTitle","hashTags":[{"name":"tag1"},{"name":"tag2"}],"uploadFiles": 
[{"fileBytes":"seriesOfBytes\n","filename":"upload.txt"}]} 

これはバックエンドに送信したい私の希望するボディです。Alamofire 4、Swift 3、json bodyの作成

私はSwift 3.0とAlamofire 4を使用していますが、複数の質問があります。

最初に、値と値の配列を含むボディを正しく作成するにはどうすればよいですか?

私のアプローチは次のとおりです。

let para:NSMutableDictionary = NSMutableDictionary() 
para.setValue("exampleTitle", forKey: "title") 
let jsonData = try! JSONSerialization.data(withJSONObject: para, options: .init(rawValue: 0)) 
let jsonString = NSString(data: jsonData, encoding: String.Encoding.utf8.rawValue) as! String 
print(jsonString) 

私の第二を

{"title":"exampleTitle"} 

を与える、私のalamofire .post要求は、次のようになりますし、機能していません。

Alamofire.request(postURL, method: .post, parameters: jsonString, encoding: JSONEncoding.default) 
     .responseJSON { response in 
      debugPrint(response) 
    } 

私はエラーメッセージを取得します:呼び出しで追加の引数 'メソッド'。 jsonStringの代わりにiがタイプの文字列を使用する場合

var jsonString: [String : Any] 

それはうまくいきますが、私はこのタイプに身体を置く方法を知らないのです。 は体を作成する方法のヘルプ(例は最高だろう)、そしてどのように私のバックエンドにAlamofire 4かつ迅速な3を介して送るのを探して

要約。

+0

の可能性のある重複した[迅速にBODYとPOSTリクエストを送信する方法](http://stackoverflow.com/questions/31982513/how-to-send-a-post-request-with-body- in-swift) –

答えて

10

パラメータを[String:Any]ディクショナリとして渡す必要があります。このように、渡すJSONとして1つの辞書を作成します。

let params = [ 
       "title":"exampleTitle", 
       "hashTags": [["name":"tag1"],["name":"tag2"]], 
       "uploadFiles":[["fileBytes":"seriesOfBytes\n","filename":"upload.txt"]] 
      ] 

これをAlamofireリクエストでパラメータとして渡します。

Alamofire.request(postURL, method: .post, parameters: params, encoding: JSONEncoding.default) 
    .responseJSON { response in 
     debugPrint(response) 
} 
+0

私はそれを受け入れられたとマークする前にもう1つ質問します:私もヘッダーを持っています。どこにリクエストを置くのですか?どのようにフォーマットする必要がありますか?私はパラメータのようにそれらを追加しようとしましたが、それは私に余分な呼び出しメッセージをもう一度与えました。 –

+0

ヘッダーの場合は、ここで新しい質問をしないとhttps://github.com/Alamofire/Alamofire#http-headersを確認してください。 –

+0

ヘッダーを渡す場合はこれを確認してください。http://stackoverflow.com/a/39512635/6433023 –

関連する問題