使用 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 检查 Wordpress 登录信息?
如何在上传带参数的图像时使用 AFNetworking 2.0 设置 cookie?