C#HttpClient发送多种形式的post数据
本文关键字:post 数据 多种形式 C#HttpClient | 更新日期: 2023-09-27 18:21:34
我在调用API时遇到了一些问题。我需要发送包含两个内容的post数据:一个ID和一个字符串数组。
我尝试了很多事情,但都导致了错误,或者根本没有以正确的方式发送数据。我找到的所有答案都没有处理我想发送两种不同数据类型的事实。
我当前的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
}