Richard
Richard

Reputation: 224

How to consume REST service from a MVC 4 web application?

Can someone give me pointers on how to How to consume an external REST service from a MVC 4 web application? The services rely on an initial call with credentials base 64 encoded, then returns a token which is used for further web service queries.

I cannot find an easy primer on how to do this kind of thing, could someone help please? I have all this working in classic ASP & JQuery but need to move over to an MVC 4 web application.

Upvotes: 1

Views: 5945

Answers (1)

Darin Dimitrov
Darin Dimitrov

Reputation: 1038710

You could use the HttpClient class. Here's an example of how you could send a GET request and use Basic Authentication:

var client = new HttpClient();
client.BaseAddress = new Uri("http://foo.com");
var buffer = Encoding.ASCII.GetBytes("john:secret");
var authHeader = new AuthenticationHeaderValue("Basic", Convert.ToBase64String(buffer));
client.DefaultRequestHeaders.Authorization = authHeader;
var response = client.GetAsync("/api/authenticate").Result;
if (response.IsSuccessStatusCode)
{
    string responseBody = response.Content.ReadAsStringAsync().Result;
}

Once you have retrieved the access token you could make authenticated calls:

var client = new HttpClient();
client.BaseAddress = new Uri("http://foo.com");
string accessToken = ...
var authHeader = new AuthenticationHeaderValue("Bearar", accessToken);
client.DefaultRequestHeaders.Authorization = authHeader;
var response = client.GetAsync("/api/bar").Result;
if (response.IsSuccessStatusCode)
{
    string responseBody = response.Content.ReadAsStringAsync().Result;
}

Upvotes: 5

Related Questions