如何使用HttpClient发布简单的POCO?

时间:2019-04-30 13:27:19

标签: c# asp.net asp.net-mvc

我有一个简单的DTO对象,如下所示:

public class InstructionComponents
    {
        public int ApplicationNumber { get; set; }
        public string FurtherComments { get; set; }
    }

我希望能够通过POST请求将此对象发送到使用ASP.NET MVC的API端点。但是我想确保数据是使用请求的正文发送的,而不仅仅是像GET中那样附加到URL。

使用get请求,这非常简单,可以使用以下代码来实现。

            var url = //endpoint url   
            using(var httpClient = new HttpClient())
            {
                var response = httpClient.GetStringAsync(url).Result;
                return result;
            }

我知道我可以使用库将对象序列化为JSON字符串,但是该字符串怎么办?

2 个答案:

答案 0 :(得分:1)

这是一个POST示例,可能会有用:

private bool isTimeValid;
public bool IsTimeValid
{ 
  get { return (Totalstart > Totalend); }
  set
  {
    if(value != isTimeValid)
      {
        isTimeValid = value;
        NotifyPropertyChanged(nameof(IsTimeValid));
      }
   }
 }

答案 1 :(得分:0)

最简单的方法是扩展方法PostAsJsonAsync()

此方法将处理所需的对象的任何序列化。

从文档中可以找到

命名空间:System.Net.Http 程序集:System.Net.Http.Formatting(在System.Net.Http.Formatting.dll中)

网络上的虚构示例:

static async Task<Uri> CreateProductAsync(Product product)
{
    HttpResponseMessage response = await client.PostAsJsonAsync(
        "api/products", product);
    response.EnsureSuccessStatusCode();

    // return URI of the created resource.
    return response.Headers.Location;
}