Ваш пример Alamofire.request(.POST, "http://mywebsite.com/post-request", parameters: ["foo": "bar"])
уже содержит «Foo =» бар строку в качестве тела. Но если вы действительно хотите строку с пользовательским форматом. Вы можете сделать это:
Alamofire.request(.POST, "http://mywebsite.com/post-request", parameters: [:], encoding: .Custom({
(convertible, params) in
var mutableRequest = convertible.URLRequest.copy() as NSMutableURLRequest
mutableRequest.HTTPBody = "myBodyString".dataUsingEncoding(NSUTF8StringEncoding, allowLossyConversion: false)
return (mutableRequest, nil)
}))
Примечание: parameters
не должно быть nil
UPDATE (Alamofire 4,0, Swift 3,0):
В Alamofire 4,0 API изменился. Поэтому для пользовательской кодировки нам нужен значение/объект, который соответствует протоколу ParameterEncoding
.
extension String: ParameterEncoding {
public func encode(_ urlRequest: URLRequestConvertible, with parameters: Parameters?) throws -> URLRequest {
var request = try urlRequest.asURLRequest()
request.httpBody = data(using: .utf8, allowLossyConversion: false)
return request
}
}
Alamofire.request("http://mywebsite.com/post-request", method: .post, parameters: [:], encoding: "myBody", headers: [:])
Это отлично работает, не только простые, но все виды строк типа отображаются в формате JSON. –
спас мой день :) Спасибо (y) – ishhhh
@silmaril в моей ситуации Я могу получить необработанный запрос из бэкэнда только в том случае, если я использую метод PUT, не могли бы вы помочь мне, почему запрос POST ничего не видит –