Lar*_*tig 9 proxy actionresult .net-core httpresponsemessage
以下方法旨在接受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);
}
}
Run Code Online (Sandbox Code Playgroud)
这将在一定程度上取决于您从您收到的响应await _httpClient.SendAsync(request),但您可以反序列化请求的响应Content并从控制器返回该响应。
例如,如果请求使用 JSON,您可以执行以下操作:
if (response.IsSuccessStatusCode)
{
// Assuming the use of Newtonsoft.Json
var responseBody = JsonConvert.DeserializeObject<RequestResponse>(await response.Content.ReadyAsStringAsync());
return Ok(responseBody);
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
2693 次 |
| 最近记录: |