簡體   English   中英

如何通過IHttpActionResult獲取內容

[英]How to get content through IHttpActionResult

我有一個返回IHttpActionResult的簡單方法:

public IHttpActionResult invokeGetAction(HttpRequestMessage _request, String 
 _forResource)
{
    return new GetResourceActionResult(_request, _forResource);
}

GetResourceActionResult的實現如下:

public class GetResourceActionResult : IHttpActionResult
{
    private readonly HttpRequestMessage _request;
    private readonly string _location;

    public GetResourceActionResult(HttpRequestMessage request, string location)
    {
        _request = request;
        _location = location;
    }

    public Task<HttpResponseMessage> ExecuteAsync(CancellationToken cancellationToken)
    {
        var response = _request.CreateResponse(HttpStatusCode.OK);
        response.Headers.Location = new Uri(_location);
        return Task.FromResult(response);
    }
}

我想在System.Web.Http.ApiControllers的Get()方法中調用invokeGetAction()以便將當前請求invokeGetAction()給另一個API,如

[Authorize]
[Route("")]
public IHttpActionResult Get()
{
    return _someService.invokeGetAction(Request, "http://mockingsvc.../api/songs");
}

我可以看到HttpStatusCode.OK,所以我想我現在沒有失敗。 但是我不知道在哪里以及如何獲取invokeGetAction()傳遞的內容數據 - 在ExecuteAsync()某個地方?

好的,我忘記了...... ;-)我的代碼現在

public Task<HttpResponseMessage> ExecuteAsync(CancellationToken cancellationToken)
{
    return Task.FromResult(Execute(_resourceUri));
}

public HttpResponseMessage Execute(String resourceUri)
    {
        using (var client = new HttpClient())
        {
            client.BaseAddress = new Uri(resourceUri);
            client.DefaultRequestHeaders.Accept.Clear();
            client.DefaultRequestHeaders.Accept.Add(new MediaTypeWithQualityHeaderValue("application/json"));

            return client.GetAsync("api/songs").Result;
        }
    }

它就像一個魅力。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM