I have an ASP.NET Web API, which calls a java web service. When I run the ASP.NET Web API, I will get a JSON string as an output. Right now, I want to do error handling where when the java web service is down and when I run the API, I want it to show output as {"Error": Java web service is down}
(In JSON) instead of a whole chunk of error message which the user will not understand.
Here are my codes:
RestfulClient.cs (model class)
using System;
using System.Net.Http;
using System.Net.Http.Headers;
using System.Threading.Tasks;
namespace ApiClientJavaWebService.Models
{
public class RestfulClient
{
private static HttpClient client;
private static string BASE_URL = "http://localhost:8080/";
static RestfulClient()
{
client = new HttpClient();
client.BaseAddress = new Uri(BASE_URL);
client.DefaultRequestHeaders.Accept.Add(
new MediaTypeWithQualityHeaderValue("application/json"));
}
public async Task<string> addition(int firstNumber, int secondNumber)
{
try
{
var endpoint = string.Format("addition/{0}/{1}", firstNumber, secondNumber);
var response = await client.GetAsync(endpoint);
return await response.Content.ReadAsStringAsync();
}
catch (Exception e)
{
//What do i code here?
}
return null;
}
}
}
AdditionController.cs (controller class)
using ApiClientJavaWebService.Models;
using Newtonsoft.Json;
using System.Threading.Tasks;
using System.Web.Http;
namespace ApiClientJavaWebService.Controllers
{
public class Temp
{
public string firstNumber { get; set; }
public string secondNumber { get; set; }
public string sum { get; set; }
}
public class AdditionController : ApiController
{
private RestfulClient restfulClient = new RestfulClient();
public async Task<IHttpActionResult> Get(int firstNumber, int secondNumber)
{
var result = await restfulClient.addition(firstNumber, secondNumber);
var resultDTO = JsonConvert.DeserializeObject<Temp>(result);
return Json(resultDTO);
}
}
}
WebApiConfig.cs
using System;
using System.Web.Http;
namespace ApiClientJavaWebService
{
public static class WebApiConfig
{
public static void Register(HttpConfiguration config)
{
config.MapHttpAttributeRoutes();
config.Routes.MapHttpRoute(
name: "AdditionApi",
routeTemplate: "api/serveraddition/{firstNumber}/{secondNumber}",
defaults: new { action = "Get", controller = "Addition" }
);
GlobalConfiguration.Configuration.Formatters.JsonFormatter.MediaTypeMappings
.Add(new System.Net.Http.Formatting.RequestHeaderMapping("Accept", "text/html",
StringComparison.InvariantCultureIgnoreCase, true, "application/json")
);
}
}
}
Someone please do help me. Thank you so much.