2017-06-22 15 views
3

これまでの回答はたくさんありましたが、以下のすべてを含む最新のものは見つかりませんでしたパラメータ:url、メソッド、パラメータ、エンコーディング、ヘッダ。Alamofire:url、メソッド、パラメータ、ヘッダ、エンコーディングを使用したPOSTリクエストを書くための構文

この:

Alamofire.request(url, method: .post, parameters: params, encoding: JSONEncoding.default, headers: headers).responseJSON { ... } 

がエラーを与える:コール


UPDATE 26/06/2017

に予備の引数 "方法" を要求の形式は、実際にあります問題は、送信された1つのパラメータの形式が間違っていたことです。エラーはかなり誤解を招く。必要なパラメータのタイプとそのデフォルト値のリストについては、私の答えを参照してください。

+0

この回答を確認するhttps://stackoverflow.com/questions/44484772/how-to-post-nested-json-b y-swiftyjson-and-alamofire/44500753#44500753とhttps://stackoverflow.com/questions/44639529/using-manager-request-with-post/44639768#44639768 –

答えて

2

を使用して、それをカスタマイズすることです。

その間、私は元の質問の要求が、実際には、パラメータヘッダーに渡された値が[String:String]型であるという条件で動作することを発見しました。

Alamofireのエラービット紛らわしいである:ここ

Extra argument 'method' in call. 

したがって、使用可能な要求である。

Alamofire.request(
     url, 
     method: .post, 
     parameters: params, 
     encoding: JSONEncoding.default, 
     headers: httpHeaders).responseJSON { response in 
     ... 
    } 

予想されるパラメータの種類とそのデフォルト値で(Alamofireソースコードから採取):

Alamofire.request(
    _ url: URLConvertible, 
    method: HTTPMethod = .get, 
    parameters: Parameters? = nil, 
    encoding: ParameterEncoding = URLEncoding.default, 
    headers: HTTPHeaders? = nil) 
1

最も簡単な方法は、特定の要求を作成し、クリスタッロの答えは、それを行うのに最適なカスタム方法ですリクエストメソッドとプロパティ

var request = URLRequest(url: yourUrl) 
request.httpMethod = yourMethod 
request.setValue(yourCustomizedValue) 
request.httpBody = yourBody 
... 

Alamofire.request(request).responseJSON {...} 
+0

ありがとうございました。実際に私の質問の要求が実際に正しいように見えます。以下の回答を参照してください。 – Kqtr

+0

この例にどのようにパラメータを追加しますか? – pjdupreez

関連する問題