Невозможно выполнить запрос GET с параметром, использующим Alamofire - PullRequest
0 голосов
/ 27 июня 2019

Использование Alamofire для сетевых звонков.Мое требование, необходимо отправить тело в запросе GET.Пробовал приведенный ниже код

func getForms(formTypes: [Int], userInterestIds:[Int], completionHandler: @escaping (_ status: Bool, _ response : GetArticleApiResponse?, _ error: Error?) -> Void) {

let headers = [
    "Authorization" : "dfkjl23ksldjk3kd3",
    "Content-Type": "application/json"
]
var parameters: Parameters = [:]
parameters["post_types"] = formTypes
parameters["usr_intrst_ids"] = userInterestIds

Alamofire.request(finalUrl, method: .get, parameters: parameters, headers: headers).responseJSON { response in
    switch response.result {
    case .success:
        completionHandler(true,responseData, nil)
    case .failure(let error):
        completionHandler(false,nil,error)
    }
}

Но не получил ожидаемого ответа.Если я делаю не так.Помогите мне, как реализовать приведенный ниже вызов почтальона.

enter image description here

Заранее спасибо.

1 Ответ

0 голосов
/ 29 июня 2019

Лично я бы использовал Struct, который соответствует протоколу Codable.

struct MyStruct: Codable {
  var post_types: [Int]
  var usr_intrst_ids: [Int]
}

func getForms(formTypes: [Int], userInterestIds:[Int], completionHandler: @escaping (_ status: Bool, _ response : GetArticleApiResponse?, _ error: Error?) -> Void) {

  let myStruct = MyStruct(post_types: formTypes, usr_intrst_ids: userInterestIds)

  do {
    json = try JSONEncoder().encode(myStruct)
    var request = URLRequest(url: finalUrl)
    request.httpMethod = HTTPMethod.get.rawValue
    request.setValue("application/json; charset=UTF-8", forHTTPHeaderField: "Content-Type")
    request.setValue("dfkjl23ksldjk3kd3", forHTTPHeaderField: "Authorization")
    request.httpBody = json

    Alamofire.request(request).responseJSON { response in
      ...
    }
  } catch { // unable to encode myStruct }
...