のためにこの質問は、私は、Webサービス経由でレコードを作成する必要がAlamofire自体フォーマット辞書はAlamofire
よりスウィフト&と辞書についての詳細である、と私はAlamofireを使用しています。
{"records"=>[{"id"=>"2", "node"=>{"children"=>[{"specifications"=>"Specs", "description"=>"Fee", "line_item"=>{"sale_price"=>123.4,
"amount"=>1, "vat_percentage"=>21, "unit_price"=>99.5}}]}}], "action"=>"create", "collection"=>"invoices", "controller"=>"api/v2/api"}
を、私は私のアプリでAlamofireを経由して通話を行う場合、私は希望とWebServiceが私のコール
を拒否し、私はカールを経由して通話をシミュレートした場合、Webサービスが受け取るよりも、あまりにも多くの引用符を持っているいくつかの理由Webサービスは、受信:
{"records"=>[{"id"=>"2", "node"=>{"children"=>[{"specifications"=>"Specs", "description"=>"Fee", "line_item"=>{"sale_price"=>"123.4",
"amount"=>"1", "vat_percentage"=>"21", "unit_price"=>"99.5"}}]}}], "action"=>"create", "collection"=>"invoices", "controller"=>"api/v2/api"}
あなたはそれぞれ番号がWebサービスを反転させ、自身の周りに包まれた引用符(例えば「99.5」99.5対を持って見ることができるように
。私は周りを微調整しましたが、Swiftでこれを修正する方法を見つけることはできません。私はAlamofireのための私のペイロードを作成した方法がある:変数がlineDescriptionとlineSpecificationsは、文字列とfeePriceある
let jsonObject: [String: AnyObject] = [
"id": id as AnyObject,
"node" : [
"children": [[
"description" : lineDescription,
"specifications" : lineSpecifications,
"line_item" : [
"amount" : 1,
"unit_price" : feePrice,
"sale_price" : feePrice,
"vat_percentage" : 21
]
]] as AnyObject
] as AnyObject
]
let parameters = ["records" : [jsonObject as AnyObject]]
Alamofire.request(urlPath, method: .post, parameters: parameters, headers: ["X-API-KEY": apiKey, "Content-type application":"json", "Accept application" : "json"]).responseString() {
response in switch (response.result) {
blah blah
}
私はリクエストにエンコーディングを追加するために必要なコメントで述べたようにダブル
Webサービスを実行しようとしているときに、あなたが得ているエラーメッセージを送ってください。 –
エラーメッセージは次のとおりです。このコレクションではメソッドが許可されていません。これは本当に役に立たない。だから、Webサービスのプロダクションログ(ssh test @ site tail -f shared/log/production.log)で、Curlでint/doubleとSwift/Alamofireの引用符をつけずに引用符をつけて送信していることが分かりました – Glenn
申し訳ありませんが、NSNumberに変換してから送信してください。 [ "量":1のNSNumberとして、 "UNIT_PRICE" のNSNumberとしてfeePrice、 "SALE_PRICE" のNSNumberとしてfeePrice、 "vat_percentage":21のNSNumber よう] しかし、それはdoesnの私が "LINE_ITEM" を試み –