gpt4 book ai didi

ios - 在控制台中记录 NSURLSession 请求

转载 作者:可可西里 更新时间:2023-10-31 23:55:04 25 4
gpt4 key购买 nike

是否可以将 NSURLSession 发送的请求记录到控制台?我在身份验证方面遇到问题,如果无法查看请求,我将无法调试

最佳答案

这些方法将以干净的方式打印 HTTP 请求和响应:

class func log(request: URLRequest){

let urlString = request.url?.absoluteString ?? ""
let components = NSURLComponents(string: urlString)

let method = request.httpMethod != nil ? "\(request.httpMethod!)": ""
let path = "\(components?.path ?? "")"
let query = "\(components?.query ?? "")"
let host = "\(components?.host ?? "")"

var requestLog = "\n---------- OUT ---------->\n"
requestLog += "\(urlString)"
requestLog += "\n\n"
requestLog += "\(method) \(path)?\(query) HTTP/1.1\n"
requestLog += "Host: \(host)\n"
for (key,value) in request.allHTTPHeaderFields ?? [:] {
requestLog += "\(key): \(value)\n"
}
if let body = request.httpBody{
let bodyString = NSString(data: body, encoding: String.Encoding.utf8.rawValue) ?? "Can't render body; not utf8 encoded";
requestLog += "\n\(bodyString)\n"
}

requestLog += "\n------------------------->\n";
print(requestLog)
}

class func log(data: Data?, response: HTTPURLResponse?, error: Error?){

let urlString = response?.url?.absoluteString
let components = NSURLComponents(string: urlString ?? "")

let path = "\(components?.path ?? "")"
let query = "\(components?.query ?? "")"

var responseLog = "\n<---------- IN ----------\n"
if let urlString = urlString {
responseLog += "\(urlString)"
responseLog += "\n\n"
}

if let statusCode = response?.statusCode{
responseLog += "HTTP \(statusCode) \(path)?\(query)\n"
}
if let host = components?.host{
responseLog += "Host: \(host)\n"
}
for (key,value) in response?.allHeaderFields ?? [:] {
responseLog += "\(key): \(value)\n"
}
if let body = data{
let bodyString = NSString(data: body, encoding: String.Encoding.utf8.rawValue) ?? "Can't render body; not utf8 encoded";
responseLog += "\n\(bodyString)\n"
}
if let error = error{
responseLog += "\nError: \(error.localizedDescription)\n"
}

responseLog += "<------------------------\n";
print(responseLog)
}

示例:

---------- OUT ---------->
https://api.example.com/api/auth

POST /api/auth HTTP/1.1
Host: api.example.com
------------------------->


<---------- IN ----------
https://api.example.com/api/auth

HTTP/1.1 200 /api/auth
Host: api.example.com
Content-Type: application/json; charset=UTF-8
Content-Length: 331
Date: Mon, 21 Aug 2017 18:55:46 GMT
Server: Google Frontend

{
"Data": {
"Token": "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJleHAiOjE1MDMzNDUzNDYsImlhdCI6MTUwMzM0MTc0NiwianRpIjoiNTcwNmMyN2UtODZhMi0xMWU3LThkN2ItNjJjYmY2YzkxYzdhIiwibmJmIjoxNTAzMzQxNzQ2fQ.0p09QG9ImjemQxlDIxZb9SL6j3Fy4VAAzsA-JZp27q0",
"ExpiryUnix": 1503345346,
"ExpiryTimestamp": "Mon Aug 21 19:55:46 UTC 2017"
}
}
<------------------------

关于ios - 在控制台中记录 NSURLSession 请求,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34903822/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com