2015-06-16 125 views
1

我有一个web api控制器操作,发送请求到另一台服务器并获取图像。Asp.net mvc web api异步请求结果

public class MyController : ApiController 
{ 
    public async Runner<HttpResponseMessage> Wms() 
    { 
     return await Run();          
    } 

    private Task<HttpResponseMessage> Run() 
    { 
     HttpRequestMessage requestMessage = new HttpRequestMessage(); 
     requestMessage.RequestUri = "http://...."; 

     foreach (var header in this.Request.Headers) 
      requestMessage.Headers.Add(header.Key, header.Value); 

     return requestMessage.SendAsync(); 
    } 
} 

我怎样才能得到的requestMessage.SendAsync()

回答

1

异步请求结果你需要异步调节剂添加到方法和await SendAsync()

private async Task<HttpResponseMessage> RunAsync() 
{ 
    HttpRequestMessage requestMessage = new HttpRequestMessage(); 
    requestMessage.RequestUri = "http://...."; 

    foreach (var header in this.Request.Headers) 
     requestMessage.Headers.Add(header.Key, header.Value); 

    HttpResponseMessage response = await requestMessage.SendAsync(); 
    string resultData = await response.Content.ReadAsStringAsync(); 
} 

或者,如果你想里面Wms响应,你可以await那。

+0

var response = await requestMessage.SendAsync();响应没有名为Result的属性。那么我怎样才能得到图像的结果呢? – barteloma

+0

您正在寻找'var result = await response.Content.ReadAsStringAsync();'或'ReadAsStreamAsync()',无论您想要什么。 –