在Dot Net Core代理控制器操作

时间:2018-04-23 13:53:31

标签: proxy .net-core actionresult 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);
        }

    }

1 个答案:

答案 0 :(得分:0)

这将部分取决于您从 myFile = open('textFile.txt', 'r+') with open('textFile.txt', 'r') as fileinput: for line in fileinput: line = line.upper() d = {} #change is here for i in line: d[i] = d.get(i,0) + 1 for k,v in sorted(d.items()): print("{}: {}".format(k,v)) 收到的响应,但是您可以反序列化请求中的响应await _httpClient.SendAsync(request)并从控制器中返回。

例如,如果请求使用JSON,则可以执行以下操作:

Content