【问题标题】:Alamofire POST request with nested parameters returns nothing带有嵌套参数的 Alamofire POST 请求不返回任何内容
【发布时间】:2018-09-13 13:19:21
【问题描述】:

您好,我正在尝试将 Alamofire 用于我的 HTTP 请求。它正在使用不包含任何嵌套参数的参数。通常情况下,我的 url 可以在 Google Chrome 上使用。

http://111.222.33.4:12345/my_server/dispatch?cmd=ext_getReferanceData&jp=%7b%22rfName%22:%22RF_ABC%22%7d&token=123 以上网址的解码版本是

http://111.222.33.4:12345/my_server/dispatch?cmd=ext_getReferanceData&jp={"rfName":"RF_ABC"}&token=123

当我将它粘贴到任何浏览器时,它都可以正常工作。但是,当我尝试使用 Alamofire 发送以下帖子请求时

    let parameters3: [String: Any] = [
        "cmd": "ext_getReferanceData",
        "jp": [
            "rfName": "RF_ABC"
        ],
        "token": "123"
    ]

    Alamofire.request("http://111.222.33.4:12345/my_server/dispatch", method: .get, parameters: parameters3, encoding: JSONEncoding.default).responseJSON { (response) in
    }

它正在返回

失败: responseSerializationFailed(Alamofire.AFError.ResponseSerializationFailureReason.inputDataNilOrZeroLength)

可能是我发送参数错误的原因还是我遗漏了什么?

编辑:我还检查了有关错误的其他问题,但问题在于我尝试发送的参数,因为参数中有 " 和 { 但我无法在请求中发送。

【问题讨论】:

标签: ios swift alamofire nsurlrequest


【解决方案1】:

您是否考虑过打印正在发送的响应并确认它确实是您要发送的内容?

你可以做一些改进

  1. 制作方法.post
  2. 尝试使用 .validate() 来增加可靠性

我的做法是这样的:

let submissionURL = URL(string: "https://blablabla.com/script.php")
 sendAlamofireRequest(submissionURL: submissionURL!, parameters: parameters, chosenTrackerStr: chosenTrackerString) //function call

 //function declaration
func sendAlamofireRequest(submissionURL: URL, parameters: Parameters, chosenTrackerStr: String){

    Alamofire.request(submissionURL, method: .post, parameters: parameters, encoding: JSONEncoding.default).validate().responseString() { (response) in
         //actual code goes here
    }
 }

也许尝试使用 alamofire 请求并查看其文档以查看建议的方法:)

【讨论】:

    猜你喜欢
    • 2021-07-07
    • 1970-01-01
    • 2016-03-03
    • 1970-01-01
    • 2018-05-07
    • 2021-09-18
    • 2023-01-23
    • 2018-10-24
    • 2016-04-09
    相关资源
    最近更新 更多