post application/x-www-form-urlencoded Alamofire

Mar*_*nis 17 ios alamofire swift2

我想使用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)
}
Run Code Online (Sandbox Code Playgroud)

Maj*_*ter 26

那么你真的不需要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)
}
Run Code Online (Sandbox Code Playgroud)

我认为标题可以省略,因为alamofire会附加相应的Content-Type标题.如果有效,请告诉我.

您还可以在此处找到大量规格和示例.


Max*_*tov 10

以下是截至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)
}
Run Code Online (Sandbox Code Playgroud)

无需显式设置内容类型标头,因为它是由Alamofire自动设置的.


Suh*_*til 7

以上版本的Alamofire 4.7.3和Swift 4.0

根据带有URL编码参数的POST请求的文档

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
Run Code Online (Sandbox Code Playgroud)