2016-12-02 64 views
1

我需要从控制台应用程序调用webapi。我已经写了 下面的代码,但它不工作:如何从我们的控制台应用程序调用WebAPI方法?

private static async Task UploadDataFromWebApi() { 
    try { 
     System.Net.Http.HttpClient client = new System.Net.Http.HttpClient(); 
     client.BaseAddress = new Uri("http://localhost:8077/api/"); 
     client.DefaultRequestHeaders.Accept.Add(new System.Net.Http.Headers.MediaTypeWithQualityHeaderValue("application/json")); 
     var resp2 =await client.GetAsync("Report/GetReportGroup"); 
     resp2.EnsureSuccessStatusCode(); 
     var aaa = resp2.Content; 
     string result = await aaa.ReadAsStringAsync(); 
     Console.WriteLine(result); 
     Console.ReadLine(); 
    }  
    catch(Exception ex) { 
    } 
}   

但如果我呼吁相同的URL是:从REST客户端 http://localhost:8077/api/Report/GetReportGroup那么它工作正常。

那么如何从我的控制台应用程序调用Web API方法?

在此先感谢。

+0

代替resp2.EnsureSuccessStatusCode();检查状态码和响应内容 – Suyog

回答

1

下面的代码工作对我来说: -

Console.WriteLine("Making API Call..."); 
using (var client = new HttpClient(new HttpClientHandler { AutomaticDecompression = DecompressionMethods.GZip | DecompressionMethods.Deflate })) 
{ 
client.BaseAddress = new Uri("http://localhost:8077/api/"); 
HttpResponseMessage response = client.GetAsync("Report/GetReportGroup").Result; 
response.EnsureSuccessStatusCode(); 
    string result = response.Content.ReadAsStringAsync().Result; 
Console.WriteLine("Result: " + result); 
} 
Console.ReadLine(); 
相关问题