如何在发送之前对 JSON 进行 NSLog
Posted
技术标签:
【中文标题】如何在发送之前对 JSON 进行 NSLog【英文标题】:How to NSLog JSON before it sends 【发布时间】:2013-07-03 13:21:17 【问题描述】:这是我上传文件的 POST 请求。如何在实际发送之前 NSLog 发送到服务器的 JSON?
NSMutableDictionary *dict = [NSMutableDictionary dictionary];
[dict setObject:twitid forKey:@"twit"];
[dict setObject:hash forKey:@"hash"];
AFHTTPClient *httpClient = [[AFHTTPClient alloc] initWithBaseURL:url];
if ([mediaFile isKindOfClass:[UIImage class]])
imageData = UIImageJPEGRepresentation(mediaFile, 0.5);
NSMutableURLRequest *request = [httpClient multipartFormRequestWithMethod:@"POST" path:nil parameters:dict constructingBodyWithBlock: ^(id <AFMultipartFormData>formData)
if ([mediaFile isKindOfClass:[UIImage class]])
[formData appendPartWithFileData:imageData name:@"media" fileName:@"picture.png" mimeType:@"image/png"];
else if(isThisAudio)
[formData appendPartWithFileData:mediaFile name:@"media" fileName:@"audio.caf" mimeType:@"audio/caf"];
else
[formData appendPartWithFileData:mediaFile name:@"media" fileName:@"movie.mov" mimeType:@"video/quicktime"];
];
AFJSONRequestOperation *operation = [AFJSONRequestOperation JSONRequestOperationWithRequest:request
success:^(NSURLRequest *request, NSHTTPURLResponse *response, id JSON)
NSDictionary *jsonDictionary = JSON;
NSLog(@"jsonDictionary: %@",jsonDictionary);
failure:^(NSURLRequest *request , NSURLResponse *response , NSError *error , id JSON)
NSLog(@"Failed: %@",[error localizedDescription]);
];
[operation setUploadProgressBlock:^(NSUInteger bytesWritten, long long totalBytesWritten, long long totalBytesExpectedToWrite)
percentDone = ((float)((int)totalBytesWritten) / (float)((int)totalBytesExpectedToWrite));
NSLog(@"Uploaded %f",percentDone);
];
[httpClient enqueueHTTPRequestOperation:operation];
【问题讨论】:
我看不到任何代码行,您在哪里将任何 JSON 数据附加到请求中 我正在发送一个文件和一个名为 dict 的字典。我想在发送之前把所有的东西都打印出来。 我可能是盲人,但我找不到添加“JSON dict”的代码行 请注意,您不会将 JSON 发送到服务器。您发送包含 3 个文件的多部分表单请求。可能是您接收 JSON。 【参考方案1】:一个不错的选择是使用Charles proxy 之类的东西来监控实际通过网络发送的内容。通过这种方式,您可以看到网络上实际发生的情况,而不是代码流中某个点的状态。
【讨论】:
我不能在控制台打印出来吗? 不使用 Charles 代理方法,不。要在控制台打印,您需要在代码中生成数据的某个位置添加一个 NSLog。【参考方案2】:查看NSURLRequest-cURL 类别。
您可以简单地使用类别:
NSLog(@"%s %@", __FUNCTION__, [request cURLCommand])
【讨论】:
以上是关于如何在发送之前对 JSON 进行 NSLog的主要内容,如果未能解决你的问题,请参考以下文章
如何对查询结果进行“计数”并将其作为 JSON 格式的数组发送?