任何人都可以指导我如何使用swift 4.0和目标C以json格式打印来自dataTaskWithRequest的Web服务请求和响应。
尝试了链接:
How to print NSMutableURLRequest?
我可以打印它们,但它不能以适当的格式打印。我需要一种格式,以便我可以将其粘贴在邮递员或网络浏览器中并进行测试。
我需要的请求格式:
例如:https://restcountries.eu/rest/v2/name/aruba?fullText=true
对于回复:
需要响应格式,例如上面的网址响应,我可以在http://jsonviewer.stack.hu中查看它们。
答案 0 :(得分:2)
获取字符串和字典对象中的响应对象:
NSURLSessionDataTask *task = [session dataTaskWithRequest:URLRequest
completionHandler:
^(NSData *data, NSURLResponse *response, NSError *error)
{
// your code
NSString *responseString = [[NSString alloc] initWithData:data encoding:NSASCIIStringEncoding];
id responseObjects = [NSJSONSerialization JSONObjectWithData:data options:NSJSONReadingAllowFragments error:&error];
}
从NSData对象或字典中获取漂亮的json格式:
NSData *jsonData = [NSJSONSerialization dataWithJSONObject:yourDictionary
options:NSJSONWritingPrettyPrinted
error:&error];
NSString *strData = [[NSString alloc] initWithData:jsonData encoding:NSUTF8StringEncoding];
NSLog(@"Params : %@", strData);
修改强>
要打印json请求,请尝试使用:
// for POST/JSON type
NSLog(@"Request body %@", [[NSString alloc] initWithData:[request HTTPBody] encoding:NSUTF8StringEncoding]);
// for GET type
NSLog(@"Request url : %@", [[request.URL absoluteString] stringByRemovingPercentEncoding]);
答案 1 :(得分:0)
您可以打印JSON数据,例如
if error == nil {
do {
let json = try JSONSerialization.jsonObject(with: data!, options: .allowFragments)
print(json)
let dic = json as! NSDictionary
print(dic)
}
catch {
print("Throw error when convert to json")
}
}
答案 2 :(得分:0)
以JSON格式打印响应,以便您可以将其复制/粘贴到Postman中并进行检查。
在目标C :
let v = 32;
let _ = v.clone();
let _ = Clone::clone(&v);
let _ = <i32 as Clone>::clone(&v);
在Swift 4中:
NSString* jsonString = [[NSString alloc] initWithData:jsonData encoding:NSUTF8StringEncoding];
NSLog(@"jsonString: %@", jsonString);