繁体   English   中英

C#HttpClient发送多种形式的发布数据

[英]C# HttpClient send multiform post data

我在调用API时遇到一些问题。 我需要发送包含两件事的帖子数据:一个ID和一个字符串数组。

我尝试了很多事情,所有这些都会导致错误,或者只是没有以正确的方式发送数据。 我找到的所有答案都无法处理我要发送2种不同数据类型的事实。

我当前的C#代码如下:

HttpClient client = new HttpClient();
client.BaseAddress = new Uri(SERVER_URI);
var content = ; //This is where I need help
HttpResponseMessage response = client.PostAsync("API URL", content).Result;

API函数的设置如下:

public ActionResult Function(int Id, string[] array)
{
    // Contents are not relevant
}

这里的问题是我需要能够设置值的名称。 我尝试使用以下代码将所需数据序列化到Json:

StringContent content = new System.Net.Http.StringContent(TypeSerializer.SerializeToString(new { Id = Id, array = array }));

当然,在此示例中,Id和Array是填充变量。 这将导致成功调用服务器,但是服务器无法正确接收数据(两个变量均保持为空)

我也尝试过使用MultiPartContent进行此操作,但是再一次,我看不到任何为值正确命名的方法(每次尝试都会导致API接收空值)

编辑:

我知道它是使用MultipartFormDataContent发送ID的。

MultipartFormDataContent content = new MultipartFormDataContent();
content.Add(new StringContent(Id), "Id");

我似乎仍然无法获得将数组发送到服务器的信息。

将事物包装成这样的对象

public class MyPostObject
{
    public int Id{get;set;}
    public IEnumerable<string> Array{get;set;}
}

然后将其作为json发送

using (var client = new HttpClient())
{
    var myObject = new MyPostObject(){Id =XXXX, Array = YYYYY};
    using (var response = await client.PostAsJsonAsync("api/CONTROLLER/METHOD", myObject))
    using (var content = response.Content)
    {
        var result = content.ReadAsAsync<LoginModelResponse>().Result;
    }
}

并在服务器中以json的形式接收

[HttpPost]
public dynamic METHOD([FromBody] MyPostObject mydata)
{
    //Do whatever
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

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