How to perform a request to a REST API in ASP.net 5.0 (MVC6)

1.5k views Asked by At

I am writing an ASP.Net 5, MVC 6 application (also referred to as 'ASP.net vNext') with Visual Studio 2015 RC.

How do I perform a simple GET request to a REST API? In .net 4.5 I would have used HttpClient but that no longer seems to be available.

I have tried adding both the 'System.Net.Http' and 'Microsoft.Net.Http' packages as advised by Visual Studio, however I still get "The type or namespace name 'HttpClient' could not be found" which leads me to believe that HttpClient is not the right way to do this in ASP.net 5?

Can anyone advise on the correct way to make HTTP GET requests in ASP.net 5?

Update: My question is not a duplicate of 'HttpClient in ASP.NET 5.0 not found?' bercause the answer given is out of date and not applicable to the latest version of ASP.net 5.0

2

There are 2 answers

0
Martin Kearn On BEST ANSWER

I found an answer which was in part from a post called ' HttpClient in ASP.NET 5.0 not found?', but there were some missing gaps because the technology has moved on a bit now. I have blogged the full solution here: http://blogs.msdn.com/b/martinkearn/archive/2015/06/17/using-httpclient-with-asp-net-5-0.aspx

1
Magnus Karlsson On

Here is a solution for you, I just tried it out on the ASP.Net 5 Web site project template. Add the following method to HomeController

static async Task<string> DownloadPageAsync()
    {
        string page = "http://en.wikipedia.org/";

        using (HttpClient client = new HttpClient())
        using (HttpResponseMessage response = await client.GetAsync(page))
        using (HttpContent content = response.Content)
        {
            string result = await content.ReadAsStringAsync();

            return result.Substring(0, 50);
        }

    }

Then in the HomeControllers Index method

string test = DownloadPageAsync().Result;

And in project.json I added the following reference at dependencies

  "Microsoft.Net.Http": "2.2.22"