C# 用于检索web API响应的HttpClient

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

我想要一个发送http请求并返回HttpResponseMessage的通用函数。 这是我现在得到的

        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
请求时,您将忽略内容体,在第二个示例中,您将允许框架抛出异常(它的设计初衷是这样的)