我正在调用我使用HTTP Get访问的第三方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的首选方法吗?
答案 0 :(得分:1)
虽然我知道SO不鼓励“最佳实践”问题,但我见过WebAPIs的“Microsoft推荐”方式是在HttpClient
NuGet包中使用Microsoft.AspNet.WebApi.Client
。除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${1}\t{2}", product.Name, product.Price, product.Category);
}
}
FMI,请参阅Calling a Web API From a .NET Client in ASP.NET Web API 2 (C#)