使用 AFNetworking 2.0 如何使用 JSON 测试我的 POST 请求的大小?

Posted

技术标签:

【中文标题】使用 AFNetworking 2.0 如何使用 JSON 测试我的 POST 请求的大小?【英文标题】:With AFNetworking 2.0 how can I test the size of my POST request with JSON? 【发布时间】:2013-11-27 11:33:46 【问题描述】:

不确定这是否可行,但我基本上需要在将 json 发送到服务器之前检查它的大小(以字节或 mb 为单位)。

有人知道怎么做吗?

我发送数据到服务器的代码是:

 [manager POST:@"http://10.1.0.119:9000/sync" parameters:parameters success:^(AFHTTPRequestOperation *operation, id responseObject) 
    NSLog(@"String Result: %@",operation.responseString);
    NSLog(@"Return JSON: %@", responseObject);
    NSLog(@"-------------------------------");
    [self executeUpdates:responseObject];
 failure:^(AFHTTPRequestOperation *operation, NSError *error) 
    NSLog(@"String Result: %@",operation.responseString);
    NSLog(@"Error: %@", error);
];

此代码 100% 有效,除非 JSON 文件对于服务器来说太大。服务器生成一个 413 错误代码,但这不会返回到我在客户端上的应用程序。当代码在服务器上生成时,我的应用程序继续正常运行,我得到的只是一个 NULL JSON 响应,没有错误代码,我认为这很奇怪。

我知道可以在服务器上设置 JSON 文件的最大大小,但是如果我无法在客户端检测到错误,这会出现明显的问题。

希望大家帮忙。

编辑

JSOn 是空白的,因为没有发送和接收数据。但它是由 jsonlint.com 确认的正确 json,那么您如何测量发送 json 的大小?从 iPad 发送到服务器?在 iPad 上?

JSON:

Sending JSON:"teachers" : [],"syncheader" : "servertimesync" : "","deviceid" : "4E48DBF8-F616-4AB2-A926-95F197DCCD83","classes" : [],"learners" : []

Return JSON: classes = ();learners = ();schools = (); syncheader = deviceid = "4E48DBF8-F616-4AB2-A926-95F197DCCD83"; servertimesync = 20131129122854;; teachers = ();

【问题讨论】:

你的 JSON 在哪里? JSON 是否相关? 如果你想知道JSON的大小,我认为它是相关的。但是根据您的代码,您根本不会在任何地方发送 JSON。你的问题有意义吗? 参数变量是以 JSON 格式发送到服务器的 NSDictionary 值。 您可以将 NSDictionary 转换为 JSON 字符串并将其存储在 NSString 中,然后您可以使用 strlen([myJsonString UTF8String]) 来获取字节的大小。 【参考方案1】:

您可以像这样将其转换为 NSData 对象并从中获取总字节数。

   NSData *jsonData = [NSJSONSerialization dataWithJSONObject:myDict options:0 error:NULL];
   NSUInteger total_bytes = [jsonData length];

【讨论】:

以上是关于使用 AFNetworking 2.0 如何使用 JSON 测试我的 POST 请求的大小?的主要内容,如果未能解决你的问题,请参考以下文章

如何使用 AFNetworking 2.0 下载文件

如何使用 AFNetworking 2.0 将包含字典的数组发送到服务器?

如何使用 AFNetworking 2.0 检查 Wordpress 登录信息?

如何在上传带参数的图像时使用 AFNetworking 2.0 设置 cookie?

AFNetworking 2.0。如何检查套接字的可达性状态(managerForAddress :)?

如何使用 AFNetworking 2.0 处理 Parse.com Rest API 错误