Я пишу простое прокси-приложение, которое получает «URL-адрес» типа «/ xController / xMethod» и получает результат из другого веб-приложения с помощью HttpClient и показывает результат.
Мой метод:
public ActionResult Index(string urlAddress)
{
var data = "";
if (Request.ContentLength > 0 && httpRequestMessage != null)
data = httpRequestMessage.Content.ReadAsStringAsync().Result;
using (var client = new HttpClient())
{
// fill header and set target site url
// Make Post Data
var buffer = System.Text.Encoding.UTF8.GetBytes(data);
var byteContent = new ByteArrayContent(buffer);
if (!String.IsNullOrWhiteSpace(Request.ContentType) && !String.IsNullOrEmpty(Request.ContentType))
byteContent.Headers.ContentType = new MediaTypeWithQualityHeaderValue(Request.ContentType);
// make query string ....
// sending request to target site
HttpResponseMessage response = null;
if (Request.HttpMethod.ToUpper() == "POST")
response = client.PostAsync(urlAddress + queryString, byteContent).Result;
else
response = client.GetAsync(any + queryString).Result;
// My Problem is in here....
return ....;
}
}
Я хочу показать свой запрос в браузере, и когда ответ был файл, браузер загружает содержимое, а когда ответ Json, отображается как Json и так далее.
(например) я знаю, когда я хочу показать HTML.я использую:
ActionResult x = new ContentResult()
{
Content = response.Content.ReadAsStringAsync().Result,
ContentType = response.Content.Headers.ContentType.MediaType
};
return x;
или когда я хочу вернуться в виде HTML, используя JsonActionResult, или в файле, используя FileContentResult, но я хочу быстрое и надежное решение для преобразования любого HttpResponseMessage в лучший класс ActionResult