
July 25, 2025 07:51 by
Peter
Do you need to retrieve data from a Web API when developing an ASP.NET MVC application? You don't need to search any farther! Using actual examples and recommended practices, this article will teach you how to use the HttpClient class in ASP.NET MVC to consume a Web API.

What You'll Learn
- What is HttpClient in .NET?
- How to make GET requests to an API.
- Deserialize JSON response into objects.
- Display API data in an MVC view.
- Full working code example.
Why Use HttpClient?
The HttpClient class is a part of the System.Net.Http namespace and provides powerful capabilities to send HTTP requests and receive HTTP responses.
It supports
- GET, POST, PUT, DELETE methods.
- Asynchronous operations.
- Custom headers and authentication.
Prerequisites
- Visual Studio (2019 or newer recommended)
- ASP.NET MVC project
- A working Web API endpoint
- NuGet package: Newtonsoft.Json
Steps to Calling Web API in ASP.NET MVC
Step 1. Create a Model
public class Employee
{
public int Id { get; set; }
public string Name { get; set; }
public string Department { get; set; }
}
Step 2. Create Your Controller
using System;
using System.Collections.Generic;
using System.Net.Http;
using System.Net.Http.Headers;
using System.Threading.Tasks;
using System.Web.Mvc;
using Newtonsoft.Json;
using YourApp.Models;
public class HomeController : Controller
{
string Baseurl = "https://yourapi.com/api/";
public async Task<ActionResult> Index()
{
List<Employee> EmpInfo = new List<Employee>();
using (var client = new HttpClient())
{
client.BaseAddress = new Uri(Baseurl);
client.DefaultRequestHeaders.Clear();
// Set header to accept JSON
client.DefaultRequestHeaders.Accept.Add(
new MediaTypeWithQualityHeaderValue("application/json"));
// Call API
HttpResponseMessage Res = await client.GetAsync("Employee/GetAllEmployees");
// Check response
if (Res.IsSuccessStatusCode)
{
var EmpResponse = Res.Content.ReadAsStringAsync().Result;
EmpInfo = JsonConvert.DeserializeObject<List<Employee>>(EmpResponse);
}
}
return View(EmpInfo);
}
}
Step 3. Create the View (Index.cshtml)
@model IEnumerable<YourApp.Models.Employee>
<h2>Employee List</h2>
<table border="1">
<tr>
<th>ID</th>
<th>Name</th>
<th>Department</th>
</tr>
@foreach (var emp in Model)
{
<tr>
<td>@emp.Id</td>
<td>@emp.Name</td>
<td>@emp.Department</td>
</tr>
}
</table>
Notes and Best Practices
- Don't instantiate HttpClient inside a loop or frequently. Consider reusing it with dependency injection.
- Always check for IsSuccessStatusCode before using the response.
- For APIs that require authentication (Bearer tokens, etc.), you can add headers:
client.DefaultRequestHeaders.Authorization =
new AuthenticationHeaderValue("Bearer", token);
Install Newtonsoft.Json
Install-Package Newtonsoft.Json
Conclusion
This post taught you how to consume a Web API using the ASP.NET MVC HttpClient class. When front-end MVC has to retrieve data from external APIs or microservices, this method is frequently employed in enterprise apps.