无法通过使用 Alamofire 的参数的 GET 请求成功

Posted

技术标签:

【中文标题】无法通过使用 Alamofire 的参数的 GET 请求成功【英文标题】:Unable to succeed with GET request with Parameter using Alamofire 【发布时间】:2019-06-27 17:54:57 【问题描述】:

使用 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)
    

但是,没有得到预期的响应。如果我做错了。帮帮我,如何实现下面的邮递员电话。

提前致谢。

【问题讨论】:

您似乎没有在 Postman 中使用 Params。 在尝试在代码中过滤 API 时,您在图像中显示了一些带有 GET 请求的 API .../forms API。 filter API 也接受参数,它应该是 POST 请求。 @Don 感谢您的回复。好的,我的要求是需要在 GET 调用中发送正文。怎么做。现在,我更新了我的问题。 @AnkitJayaswal 感谢您的回复。是的,即使我要求进行 POST 调用,但后端开发人员说,这应该在 GET 调用中。最后,我的疑问是,是否有可能使用 alamofire 使这个调用成功。请检查邮递员图片 尝试发送类似这样的参数 var 参数:Parameters = [ "post_types": formTypes, "usr_intrst_ids": userInterestId ] 【参考方案1】:

就个人而言,我会使用符合 Codable 协议的 Struct。

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 

【讨论】:

以上是关于无法通过使用 Alamofire 的参数的 GET 请求成功的主要内容,如果未能解决你的问题,请参考以下文章

使用 SwiftyJSON 对 Alamofire GET 参数进行 URL 编码

无法在 Alamofire 4.0 中使用类型为“(String,withName:String)”的参数列表调用“附加”

在 Alamofire 的请求适配器中添加 GET 参数

Alamofire GET请求无法正常工作

无法使用 alamofire 4 上传带参数的图像?

如何在 Alamofire 中为 GET 方法发送自定义参数?