11

I am consuming an external web api through mvc controller with HttpClient. My web api do return json-formatted content.

How do i return the same json-formatted content of web api response in my mvc controller while consuming the web api? I am expecting something like this.

public async JsonResult GetUserMenu()
{
    using (HttpClient client = new HttpClient())
    {
        client.BaseAddress = new Uri(url);
        HttpResponseMessage response = await client.GetAsync(url);

        if (response.IsSuccessStatusCode)
        {
             return await response.Content.ReadAsJsonAsync();
        }
    }
}

2 Answers 2

22

Using Json.Net you could do something like this:

public async Task<JsonResult> GetUserMenu()
{
    string result = string.Empty;

    using (HttpClient client = new HttpClient())
    {
        client.BaseAddress = new Uri(url);
        HttpResponseMessage response = await client.GetAsync(url);

        if (response.IsSuccessStatusCode)
        {
            result = await response.Content.ReadAsStringAsync();
        }
    }

    return Json(Newtonsoft.Json.JsonConvert.DeserializeObject<dynamic>(result));
}
Sign up to request clarification or add additional context in comments.

Comments

0

Here below an example of inserting log for action.

    [HttpPost]
    public async System.Threading.Tasks.Task<ActionResult> ChangePassword(ChangePasswordInfo model)
    {
        var omodelPwd = loginContext.UsersChangePasswordRequest(objAuthModel.oUsers.iID);

        TempData[LKTransferDashboardCommon.Notification] = JsonConvert.SerializeObject(new Response { Success = false, ResponseString = "Invalid Old Password!" });
        var auditLog = LKTransferDashboardCommon.PrepareAuditLogData(
                                           "ChangePassword-Fail",
                                           objAuthModel.oUsers.iID,
                                           nameof(ChangePassword),
                                           Request.ServerVariables["REMOTE_ADDR"],
                                           "AdministrationController",
                                           objAuthModel.oUsers.Name
                                       );
         await AuditLogHelper.ExecuteAsync(auditLog, null, null, null, null, null).ConfigureAwait(false);

         return View(model);
     }

Comments

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.