Несколько типов кодирования для запроса в Аламофире 4
Я пытаюсь подключиться к стороннему API, который требует токен аутентификации в качестве параметра запроса для запроса POST с телом JSON, используя Alamofire 4.
Подобный вопрос был задан здесь: несколько типов кодирования для запроса Alamofire
Я пытаюсь реализовать принятый ответ, используя Alamofire 4 (ответ использовал Alamofire 3).
Вот что я делаю:
let url = URL(string: urlString)!
var urlRequest = URLRequest(url: url)
urlRequest.httpMethod = "POST"
let bodyParameters: [String: AnyObject] = [
"inviter": inviterId as AnyObject,
"invitee": inviteeId as AnyObject
]
let requestWithBody = try Alamofire.JSONEncoding.default.encode(urlRequest, with: bodyParameters)
let queryParameters: [String: AnyObject] = [
"api_token": tokenString as AnyObject
]
var compositeRequest = try Alamofire.URLEncoding.default.encode(urlRequest, with: queryParameters)
compositeRequest.httpBody = requestWithBody.httpBody
return compositeRequest
Код компилируется и выполняется нормально. Однако когда я выполняю запрос и печатаю response.request на консоль, URL-адрес запроса не включает параметр запроса.
1 ответ
Эта версия оригинала, кажется, работает нормально для меня (AF4/Swift4):
fileprivate func multiEncodedURLRequest(
method: HTTPMethod,
requestURL: URL,
parameters: Parameters,
bodyParameters: Parameters) -> URLRequest
{
let request = URLRequest(url: requestURL)
do {
var urlRequest = try URLEncoding.default.encode(request, with: parameters)
var bodyRequest = try JSONEncoding.default.encode(request, with: bodyParameters)
urlRequest.httpMethod = method.rawValue
urlRequest.httpBody = bodyRequest.httpBody
return urlRequest
}
catch {
return request
}
}