通过 Get 调用 Webservice 的最佳方式

Best way to call Webservice via Get

我正在呼叫我使用 HTTP Get 访问的第 3 方 API。我有一个使用 HttpWebRequest 和 HttpWebResponse 调用此 API 的工作示例,它工作正常。我想确保这是最佳实践,或者我应该使用其他东西。这不是 Web 解决方案,因此它没有内置 MVC/Web Api 引用。这是一些示例代码

     protected WebResponse executeGet(string endpoint, Dictionary<string, string> parameters, bool skipEncode = false)
    {
        string urlPath = this.baseURL + endpoint + "?" +
                         createEncodedString(parameters, skipEncode);
        Console.WriteLine("Sending to: " + urlPath);
        HttpWebRequest req = (HttpWebRequest)WebRequest.Create(urlPath);
        req.Method = "GET";
        return req.GetResponse();
    }

这是调用 Get Apis 的首选方式吗?

虽然我知道 SO 不鼓励 "best-practice" 问题,但我看到调用 WebAPI 的 "Microsoft recommended" 方式是在 Microsoft.AspNet.WebApi.Client NuGet 包中使用 HttpClient。除了 Windows 和 web 项目,这个包也支持 Windows Phone 和 Windows Store 项目。

这是他们的 GET 代码示例:

using (var client = new HttpClient())
{
    client.BaseAddress = new Uri("http://localhost:9000/");
    client.DefaultRequestHeaders.Accept.Clear();
    client.DefaultRequestHeaders.Accept.Add(new MediaTypeWithQualityHeaderValue("application/json"));

    HttpResponseMessage response = await client.GetAsync("api/products/1");
    if (response.IsSuccessStatusCode)
    {
        Product product = await response.Content.ReadAsAsync<Product>();
        Console.WriteLine("{0}\t\t{2}", product.Name, product.Price, product.Category);
    }
}

FMI,参见Calling a Web API From a .NET Client in ASP.NET Web API 2 (C#)