调试 Alamofire 请求

Posted

技术标签:

【中文标题】调试 Alamofire 请求【英文标题】:Debugging Alamofire request 【发布时间】:2017-04-06 18:23:13 【问题描述】:

我正在尝试调试 Alamofire 发送到服务器端点的 HTTP 标头和正文。当我从正在处理的端点得到确认时,所有标头参数似乎都是正确的,但是,我遇到了服务器问题,我在参数字段中发送给它的 JSON 没有被解析.如何找出请求中发送的内容?

let headers: HTTPHeaders = [
                    "API-Key": apiKey,
                    "Accept": "application/json",
                    "Content-Type": "application/json"
                ]

let data = ["name":"Don Jonhson"]


Alamofire.request(endPointUrl, method: .post,  parameters: data, 
encoding: URLEncoding.httpBody, headers: headers).responseJSON()  
           response in

           if let status = response.response?.statusCode 
              switch(status)
               case 201:
                debugPrint(response)
               default:
                debugPrint(response)
              
           

          ...

【问题讨论】:

【参考方案1】:

你正在使用一个简单的字符串字典,你必须使用 alamofire 的参数来代替

let params: Parameters = ["name":"Don Jonhson"]

Alamofire.request(endPointUrl, method: .post,  parameters: params, 
encoding: URLEncoding.httpBody, headers: headers).responseJSON()  
       response in

       if let status = response.response?.statusCode 
          switch(status)
           case 201:
            debugPrint(response)
           default:
            debugPrint(response)
          
       

      ...

【讨论】:

谢谢。如何检查名称是否已作为 JSON 正确插入到 http 正文中? 当您收到回复时,您可以检查它是否为 200,以便您收到一些数据,否则您可以检查您的后端以查看您发送给他们的用户是否已创建。你试过我的答案,如果它有效,你能把它标记为正确答案吗? 我已经收到了 200 个回复。问题是我从服务器收到一个错误,说请求正文中的 JSON 不正确。这就是我要调试的。服务器端点正在正确解释标头信息,即 API-Key、内容类型等。服务器还应该解析包含一些 JSON 数据的 http 正文。服务器端点抱怨发送的 JSON。所以我想弄清楚的是,当请求离开 iPhone 时 http 正文中的实际内容以及如何从 Alamofire 获取该信息?

以上是关于调试 Alamofire 请求的主要内容,如果未能解决你的问题,请参考以下文章

为啥我无法从 Alamofire 获取请求结果

Alamofire 发布请求未执行

如何使用 Alamofire(或 NSUrlSession)使调试日志静音?

Alamofire 编码无效URL

Alamofire 仅在运行归档应用程序时崩溃

如何在 Xcode 中抑制 Alamofire 输出以调试控制台