如何在c#中调用web api或其他restful web服务

时间:2017-10-24 14:56:07

标签: c# asp.net asp.net-mvc asp.net-web-api asp.net-mvc-5.2

我可以通过ajax请求调用每个webApi方法,但我不能通过c#来实现。 这是一个简单的web api,每个人都可以在asp.net mvc web api中创建它,但我找不到任何关于调用的例子,并通过c#以编程方式获取它。

  public class TestController : ApiController
{
    // GET: api/Test
    public IEnumerable<string> Get()
    {
        return new string[] { "value1", "value2" };
    }
}

请一些人说我怎样才能在c#中调用这个web api方法并得到这两个值。我们怎样才能从c#中的Web服务(RestFull - 没有参考)中获得价值?

3 个答案:

答案 0 :(得分:2)

要在c#中调用WEB API,您可以使用HttpClient类。

public class Client
{
   private readonly string baseUri;
   private static HttpClient _client;

    public Client(string baseUri)
    {
        this.baseUri = baseUri;

        _client = new HttpClient(new HttpClientHandler() { UseDefaultCredentials = true })
        {
            BaseAddress = new Uri(baseUri)
        };

        _client.DefaultRequestHeaders.Accept.Clear();
        _client.DefaultRequestHeaders.Accept.Add(new MediaTypeWithQualityHeaderValue("application/json"));
    }

    public async Task<SomeResource> GetResourceById(int Id)
    {
        var path = $"{baseUri}/Resources/{Id}";

        var response = await _client.GetAsync(path);

        return await response.Content.ReadAsAsync<SomeResource>();           
    }

答案 1 :(得分:1)

答案就是这样......所有给予否定反应的人都可以做到这一点而不是消极反应:

result = (uint32_t)1U << resolution;

这么容易!

答案 2 :(得分:-1)

创建一个HttpClient(https://msdn.microsoft.com/en-us/library/system.net.http.httpclient(v=vs.118).aspx)并调用其GetAsync()https://msdn.microsoft.com/en-us/library/hh158912(v=vs.118).aspx方法。我假设您已在本地运行,因此您的Uri可能类似http://localhost/test/get,具体取决于按F5时如何配置Visual Studio。这是一个完整的示例:https://docs.microsoft.com/en-us/aspnet/web-api/overview/advanced/calling-a-web-api-from-a-net-client