以下方法旨在接受 Http 方法和 url,针对 url 执行该方法,并将结果响应返回给调用者。它返回 ActionResult 是因为存在需要处理的错误情况。
目前,该方法只告诉调用者调用是否成功,不返回下游服务器响应的详细信息。我希望调用者从调用中接收整个响应(包括状态代码、响应正文等)。
如何将 HttpResponseMessage 转换为适合通过 ActionResult 返回的内容?
[HttpGet(@"{method}")]
public async Task<IActionResult> RelayRequest(string method, [FromQuery] string url)
{
var httpMethod = new HttpMethod(method);
Uri uri;
try
{
uri = new Uri(url);
}
catch (Exception e)
{
return BadRequest("Bad URL supplied: " + e.Message);
}
var request = new HttpRequestMessage(httpMethod, uri);
try
{
var response = await _httpClient.SendAsync(request);
// WANT TO RETURN (ActionResult)response HERE! <<<<<<<<<<
if (response.IsSuccessStatusCode)
{
return Ok();
}
return BadRequest(response);
}
catch (Exception e)
{
return BadRequest(e.Message);
}
}