通过Get

时间:2015-05-01 14:04:37

标签: c# http-get

我正在调用我使用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的首选方法吗?

1 个答案:

答案 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#)