如何在发送之前对 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 格式的数组发送?

Xcode 如何 NSLog 一个 JSON

如何以 JSON 格式 NSLog NSData JSON 响应?

我如何从 json 中取出值并在 NSLog 中显示它们

如何在发送 Nestjs 之前格式化响应?

我如何通过 json 将数据从我的设备发送到我的 php 文件