如何调试网络请求 Swift

Posted

技术标签:

【中文标题】如何调试网络请求 Swift【英文标题】:How to debug network request Swift 【发布时间】:2016-01-09 22:25:57 【问题描述】:

我在请求正文中使用 JSON 向 API 发出 http 请求。我知道我的 Dictionary<String, String> 包含 JSON 数据是正确的,但我仍然从服务器收到我的输入数据无效的响应。我正在做与此非常相似的事情:Swift 2.0 url post request。我什至尝试了那里建议的扩展,但没有成功。

我应该如何调试这个?我找不到任何方法将我的整个请求打印到控制台。我想在发送请求之前知道我的 URLRequest 实际包含的内容。另外,我想知道这个十六进制乱码实际上是我想要的正确的乱码,我应该怎么做?

【问题讨论】:

跟进问题:***.com/q/34705449/4600952 【参考方案1】:

这没什么特别的吗?只需编写扩展程序并打印您想要的任何内容

示例:

extension Data 
    func toString() -> String? 
        return String(data: self, encoding: .utf8)
     


extension URLRequest 
    func log() 
        print("\(httpMethod ?? "") \(self)")
        print("BODY \n \(httpBody?.toString())")
        print("HEADERS \n \(allHTTPHeaderFields)")
    

用法:

request.log()

示例日志:

POST https://httpbin.org/
BODY 
Optional("password=xxx&username=xxx")
HEADERS 
Optional(["Content-Type": "application/x-www-form-urlencoded; charset=utf-8"])

【讨论】:

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

使用 Swift 4 的简单网络请求

在 Swift 中使用 Alamofire 网络进行解析时,如何在请求中发送内容类型?

来自网络请求 JSON 的 Swift 字符串有换行符 - 如何删除换行符?

在 Swift 上发出多个网络请求

Swift 3 中的顺序网络请求

Swift:链接多个网络请求,Alamofire