繁体   English   中英

如何通过POST向服务器提交一个非常长的字符串并获得jSON响应

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM