C# 用于检索web API响应的HttpClient
我想要一个发送http请求并返回HttpResponseMessage的通用函数。 这是我现在得到的C# 用于检索web API响应的HttpClient,c#,.net,C#,.net,我想要一个发送http请求并返回HttpResponseMessage的通用函数。 这是我现在得到的 public static HttpResponseMessage SendRequest(string actionUri, string baseAddress, HttpRequestMessage request) { using (var client = new HttpClient()) { clien
public static HttpResponseMessage SendRequest(string actionUri, string baseAddress, HttpRequestMessage request)
{
using (var client = new HttpClient())
{
client.BaseAddress = new Uri(baseAddress);
HttpResponseMessage response = null;
foreach (var header in request.Headers)
{
client.DefaultRequestHeaders.Add(header.Key, header.Value);
}
if (request.Method == HttpMethod.Get)
{
response = client.GetAsync(actionUri).Result;
}
if (request.Method == HttpMethod.Post)
{
response = client.PostAsync(actionUri, request.Content).Result;
}
if (request.Method == HttpMethod.Put)
{
response = client.PutAsync(actionUri, request.Content).Result;
}
if (request.Method == HttpMethod.Delete)
{
response = client.DeleteAsync(actionUri).Result;
}
return response;
}
}
上述函数可按如下方式编写
public static HttpResponseMessage SendRequest1(string actionUri, string baseAddress, HttpRequestMessage request)
{
using (var client = new HttpClient())
{
client.BaseAddress = new Uri(baseAddress);
return client.SendAsync(request).Result;
}
}
与基于http谓词的显式调用相比,使用第二种方法是否存在任何问题。对于某些请求,GET请求出现错误,因为“无法发送此动词类型的内容体”第二段代码对我来说很好<代码>获取请求不应包含内容正文 在第一个示例中,当出现
GET
请求时,您将忽略内容体,在第二个示例中,您将允许框架抛出异常(它的设计初衷是这样的)