![](/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.