web-dev-qa-db-ja.com

ポストアプリケーション/ x-www-form-urlencoded Alamofire

Alamofireを使用してWeb APIから無記名トークンを取得したいのですが、iosとalamofireは初めてです。 Alamofireでこれを実現するにはどうすればよいですか?

func executeURLEncodedRequest(url: URL, model: [String : String]?, handler: RequestHandlerProtocol) {
    addAuthorizationHeader()
    Alamofire.request(.POST,createUrl(url), parameters: model, headers: headers,encoding:.Json)
}
18
Mario Dennis

これを行うのにAlamofireは実際には必要ありません(単純なNSURLRequestを使用して簡単に実行できます)が、次のようになります。

let headers = [
    "Content-Type": "application/x-www-form-urlencoded"
]
let parameters = [
    "myParameter": "value"
]
let url = NSURL(string: "https://something.com")!
Alamofire.request(.POST, url, parameters: parameters, headers: headers, encoding: .URLEncodedInURL).response { request, response, data, error in
    print(request)
    print(response)
    print(data)
    print(error)
}

Alamofireは適切なContent-Typeヘッダーを追加するので、ヘッダーは省略できると思います。動作するかどうか教えてください。

大量の仕様 ここに例を示します も見つけることができます。

29
Majster

以下は、2017年8月の時点でAlamofire 4.xおよびSwift 3.xで動作するはずのサンプルコードです。

let parameters = [
  "myParameter": "value"
]
Alamofire.request("https://something.com", method: .post, parameters: parameters, encoding: URLEncoding()).response { response in
  print(response.request)
  print(response.response)
  print(response.data)
  print(response.error)
}

Content-typeヘッダーはAlamofireによって自動的に設定されるため、明示的に設定する必要はありません。

11
Max Desiatov

Alamofire 4.7.3およびSwift 4.0

ドキュメント for POST Request with URL-Encoded Parameters

let parameters: Parameters = [
    "foo": "bar", 
    "val": 1 
]

// All three of these calls are equivalent
Alamofire.request("https://httpbin.org/post", method: .post, parameters: parameters)
Alamofire.request("https://httpbin.org/post", method: .post, parameters: parameters, encoding: URLEncoding.default)
Alamofire.request("https://httpbin.org/post", method: .post, parameters: parameters, encoding: URLEncoding.httpBody)

// HTTP body: foo=bar&val=1
10
Suhit Patil