通过 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#)
我正在呼叫我使用 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#)