![](/img/trans.png)
[英]dataTaskWithRequest takes too long for a very specific string
[英]How to submit a very-very long String to server via POST and get jSON response
我希望向服务器发送一个非常长的字符串(字符串长度超过 10000),作为回报,从字符串中获取 json 响应。该任务的最佳方法是什么。 我正在发送各种参数以及这个非常长的字符串。
将您的长字符串拆分为可以通过一个请求发送的部分。 像这样创建一个json
{
"index":"0",
"length":"LENGTH_OF_STRING",
"string":"xsfsffwff.......",
//other json parameters
}
然后你可以发送你的字符串
问题是您试图将所有这些都放入查询参数中。 大多数服务器都有内置的 URL 限制,这是有充分理由的。
HTTP POST 的正文没有什么特别之处,因此只需像发送其他任何内容一样发送它即可。 只需确保您设置了Content-Length
标头(因为您知道这一点;它可能被 HTTP 库覆盖),然后将您的数据流式传输。 不需要任何编码或查询参数。
我不太了解objective-c,但我确信有一种方法可以非常简单地在HTTP POST 中发送这样的数据。 我已经用 Go 和 node.js 做到了这一点,它们都有在 POST 请求正文中发送任意数据的简单方法。
If you are using the ASI-Http classes , then you can send request like this
ASIFormDataRequest *request = [ASIFormDataRequest requestWithURL:[NSURL URLWithString:[WebService getAddPhoto]]];
[request addPostValue:[[imgArray objectAtIndex:i] valueForKey:@"vComments"] forKey:@"comment"];
NSData *imageData = UIImagePNGRepresentation([UIImage imageWithContentsOfFile:[[imgArray objectAtIndex:i] valueForKey:@"vPhoto"]]);
NSString *encodedString = [imageData base64EncodingWithLineLength:[imageData length]];
[request addPostValue:encodedString forKey:@"Photo"];
[request setDelegate:self];
[request startAsynchronous]
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.