在使用System.Net.Http.HttpClient时,有没有办法给HTTP方法设置参数?

问题描述 投票:0回答:1

我正在使用 HttpClient 在.Net core 3.1中,我的大多数请求都遵循类似的模式。无论使用何种HTTP方法,我的大多数请求都遵循类似的模式。

  • 构建URL
  • 构建(可选)JSON有效载荷
  • 发出请求
  • 待复
  • 检验状态码
  • 解析(可选)JSON响应

所以我建立了一个包装函数,它可以完成这些事情,而且它把HTTP方法作为参数。但是,到了 "发送请求 "这一步,我需要用switch语句来调用HttpClient上相应的方法来调用。

我敢肯定,在皮肤下,getAsync()PostAsync()等都是调用同一个底层函数,并将Http方法作为参数传递,但我看不到任何从外部这样调用的方法。这似乎是一个奇怪的遗漏,因为根据我的经验,大多数HTTP库都是这样工作的。

c# dotnet-httpclient
1个回答
3
投票

希望这能帮助你。

// For JsonConvert use Newtonsoft.Json
string url = "YourURL";
string body = JsonConvert.SerializeObject(BodyModel);
string headerParameter = "ASD123456789";
HttpClient client = new HttpClient();
client.DefaultRequestHeaders.Accept.Add(new MediaTypeWithQualityHeaderValue("application/json")); // Content-Type of request, it can be application/xml to other
client.DefaultRequestHeaders.Add("Device", headerParameter ); // first is name, second one is value
HttpRequestMessage request = new HttpRequestMessage(HttpMethod.Post, url) // there you can have Get, Post, Put, Delete and etc. And every request needs to be configured by its settings
{
    Content = new StringContent(body, Encoding.UTF8, "application/json")
};
HttpResponseMessage response = await client.SendAsync(request);
if ((int)response.StatusCode == 200)
{
    string responseString = await response.Content.ReadAsStringAsync();
    ResponseModel responseModel = JsonConvert.DeserializeObject<ResponseModel>(responseString);
}
© www.soinside.com 2019 - 2024. All rights reserved.