【问题标题】:C# HTTP post , how to post with List<XX> parameter?C# HTTP post ,如何使用 List<XX> 参数发布?
【发布时间】:2015-03-18 12:47:21
【问题描述】:
using (WebClient wc = new WebClient())
{
    wc.Headers[HttpRequestHeader.ContentType] = "application/x-www-form-urlencoded";
    string HtmlResult = wc.UploadString(url, "sign=fsadfasdf&charset=utf-8");
}

服务器可以获取符号和字符集的值。

但是还有第三个参数LIST,它是一个对象列表(这个对象是一个实体类)。 如何将此参数传递给服务器?

我尝试使用"sign=fsadfasdf&amp;charset=hhh&amp;list=" + Json(list) 作为 postData(将 List 转换为 json 字符串)。但是服务器没有得到这个列表参数的值。

【问题讨论】:

标签: c# post webclient


【解决方案1】:

我讨厌发布带有链接的 1 行答案,但这之前已经在这里解决了...

POSTing JsonObject With HttpClient From Web API

HttpClient 类旨在解决这个问题,我相信它在 nuget 包“Microsoft.AspNet.WebApi.Client”中找到,这应该将命名空间“System.Net.Http”添加到您的项目中。

它还适合完全异步,这对您的服务器应该更好!

编辑: 要发布一个数组/集合,你会做这样的事情......

var myObject = (dynamic)new JsonObject();
myObject.List = new List<T>();
// add items to your list

httpClient.Post(
    "",
    new StringContent(
        myObject.ToString(),
        Encoding.UTF8,
        "application/json"));

【讨论】:

  • 这么简单!谢谢 ! (评论的长度必须至少为 15 个字符。)
  • 这些天我的大部分问题都归结为使用了错误的工具来完成这项工作...... HttpClient 非常适合这种异步 json 发布的东西,webclient 在这方面有一个已知问题......简而言之...很高兴我能帮上忙:)
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-08-10
  • 1970-01-01
  • 2018-12-26
  • 2011-11-04
相关资源
最近更新 更多