【问题标题】:HTTP Post removing content from dataHTTP Post 从数据中删除内容
【发布时间】:2018-08-10 13:48:13
【问题描述】:

这是我的代码

var postData = "country=1";
postData += "&desktop_api=fsdf";
postData += "&adata=" + adData;
postData += "&about_page_data=" + aboutPageContent;
postData += "&url=" + url;

StringContent content = new StringContent("data=" + postData, Encoding.UTF8, "application/x-www-form-urlencoded");

HttpResponseMessage sResponse = await client.PostAsync(siteUrl, content).ConfigureAwait(false);

adData 有超过 200 万个字符,但在我的服务器上我只收到大约 2800 个字符。

【问题讨论】:

  • Op 表示 200k @CamiloTerevinto
  • 20 万 ==> 2,00,000
  • 是否按照标头所承诺的那样正确地进行了 URL 编码?
  • 我们该怎么做?
  • 使用 Fiddler 或 Wireshark 来证明您正在发送内容,而不是服务器接收内容。

标签: c# .net httpclient


【解决方案1】:

Url 编码的帖子类型有时对于大量数据来说过于限制,因为它是一个长 url,使用多部分表单数据解决了这个问题,这之前已经解释得更好然后我可以在这里:application/x-www-form-urlencoded or multipart/form-data?

如果没有看到 adData 的价值,就很难告诉您是否有导致问题的不良角色。但为了安全起见,您应该确保您的变量是 UrlEncoded:

https://msdn.microsoft.com/en-us/library/system.web.httputility(v=vs.110).aspx

TLDR:

var postData = "country=1";

  postData += "&desktop_api=fsdf";
  postData += "&adata=" + HttpUtility.UrlEncode(adData);;
  postData += "&about_page_data=" + HttpUtility.UrlEncode(aboutPageContent);;
  postData += "&url=" + HttpUtility.UrlEncode(url);

如果您需要多部分示例:C# HttpClient 4.5 multipart/form-data upload

【讨论】:

    猜你喜欢
    • 2017-11-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-01-20
    • 1970-01-01
    • 2017-01-24
    • 2020-01-05
    • 1970-01-01
    相关资源
    最近更新 更多