簡體   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