2017-10-24 11 views
-3

私はwebApiのメソッドをすべてajaxリクエストで呼び出すことができますが、C#で行うことはできません。 これは、すべての身体がasp.net mvc web apiで作成できるシンプルなWeb APIですが、私は呼び出しに関するサンプルを見つけることができず、プログラムでC#で取得できません。Web apiやその他の快適なWeb​​サービスをC言語で呼び出す方法#

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

私はこのWeb APIメソッドをC#でどのように呼び出すことができますか、これらの2つの値を取得することができます。 C#でWebサービス(RestFull -without reference)からどのように価値を得ることができますか?

+0

HTTPリクエストの作成を容易にするために使用できるいくつかの具体的な.NETクラスがあります。また、実際にプロセスの邪魔になるような気がする場合は、独自のHTTPクライアントを構築することもできます。可能性は無限です。あなたは何を研究したのですか?グーグルで簡単に見つけることのできるオンラインの例やドキュメントがたくさんあります。 – ADyson

+1

[HTTP POSTウェブリクエストの作成方法]の複製の可能性あり(https://stackoverflow.com/questions/4015324/how-to-make-http-post-web-request) – adiga

+0

[Stackの研究努力の程度ユーザーオーバーフロー?](https://meta.stackoverflow.com/a/261593/3082296) – adiga

答えて

-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はF5キーを押したときにVisual Studioがどのように設定されているかによって、http://localhost/test/getのようなものでしょう。ここに完全な例があります:https://docs.microsoft.com/en-us/aspnet/web-api/overview/advanced/calling-a-web-api-from-a-net-client

2

WEB APIをC#で呼び出すには、HttpClientクラスを使用できます。

 string GET(string url) 
    { 
     HttpWebRequest request = (HttpWebRequest)WebRequest.Create(url); 
     try 
     { 
      WebResponse response = request.GetResponse(); 
      using (Stream responseStream = response.GetResponseStream()) 
      { 
       StreamReader reader = new StreamReader(responseStream, Encoding.UTF8); 
       return reader.ReadToEnd(); 
      } 
     } 
     catch (WebException ex) 
     { 
      WebResponse errorResponse = ex.Response; 
      using (Stream responseStream = errorResponse.GetResponseStream()) 
      { 
       StreamReader reader = new StreamReader(responseStream, Encoding.GetEncoding("utf-8")); 
       String errorText = reader.ReadToEnd(); 
       // log errorText 
      } 
      throw; 
     } 
    } 

そう簡単に:

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

答えは否定的な反応の代わりにこれを行うことができます否定的な反応を与えるこの...すべての人です!

関連する問題