Несколько типов кодирования для запроса в Аламофире 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
    }
}
Другие вопросы по тегам