Я борюсь со следующей проблемой:
Я создал решение со следующими проектами: 1 интерфейс MVC и 2 API тестирования для тестирования моего брокера бэкэнд API.
В моем интерфейсе я вызываю своего брокера API (который также является API), который отправляет запросы моим 2 тестовым API.Я получаю ответ на этот запрос в своем API Broker в строковом формате и пытаюсь вернуть его в JSON моему внешнему интерфейсу. Как мне использовать этот API и вернуть ответ в JSON моему внешнему интерфейсу?Посмотрите код ниже:
Внешний интерфейс, вызывающий моего брокера API:
[HttpGet]
public async Task<ActionResult> getCall()
{
string url = "http://localhost:54857/";
string operation = "getClients";
using (var client = new HttpClient())
{
//get logged in userID
HttpContext context = System.Web.HttpContext.Current;
string sessionID = context.Session["userID"].ToString();
//Create request and add headers
client.BaseAddress = new Uri(url);
client.DefaultRequestHeaders.Accept.Clear();
client.DefaultRequestHeaders.Accept.Add(new MediaTypeWithQualityHeaderValue("application/json"));
//Custom header
client.DefaultRequestHeaders.Add("loggedInUser", sessionID);
//Response
HttpResponseMessage response = await client.GetAsync(operation);
if (response.IsSuccessStatusCode)
{
string jsondata = await response.Content.ReadAsStringAsync();
return Content(jsondata, "application/json");
}
return Json(1, JsonRequestBehavior.AllowGet);
}
}
Мой брокер API использует один из двух моих тестовых API:
[System.Web.Http.AcceptVerbs("GET")]
[System.Web.Http.HttpGet]
[System.Web.Http.Route("RedirectApi")]
public void getCall()
{
setVariables();
WebRequest request = WebRequest.Create(apiUrl);
HttpWebResponse response = null;
response = (HttpWebResponse)request.GetResponse();
using (Stream stream = response.GetResponseStream())
{
StreamReader sr = new StreamReader(stream);
var srResult = sr.ReadToEnd();
sr.Close();
//Return JSON object here!
}
}
Я также обеспокоен тем, что мой интерфейс ожидает ActionResult вместо объекта JSON, я надеюсь, что вы найдете здесь несколько советов.
Заранее спасибо!