2014-12-22 4 views
2

웹 API를 개발했습니다. .NET 4 및 4.5의 HttpClient를 사용하여 API에 액세스 할 수 있지만 기존 .NET 3.5 응용 프로그램에서이 API에 액세스하려고합니다. 가능한가? 나는 인터넷에서 HttpClient가 .net 3.5에서 지원되지 않는다는 것을 배웠다. 그래서 .net 3.5 응용 프로그램에서이 서비스를 어떻게 소비합니까?개체를 사용하여 DotNet 3.5 웹 응용 프로그램에서 웹 API를 호출하는 방법?

+0

체크 아웃 http://restsharp.org/ 사용할 수 – wal

+2

WebRequest 클래스, http://msdn.microsoft.com/en-us/library/system.net.webrequest(v=vs.90) .aspx –

+0

WebAPI는 다른 REST API와 동일합니다. HTTP 요청을 보내려는 메서드를 사용할 수 있습니다. 예를 들어 내장 WebRequest 클래스, RestSharp –

답변

4

체크 아웃이 link for .net version 3.5 사용할 수 있습니다

을 또는 내가 .NET 4.5에서 통화를하고 방법이 3.5

System.Net.WebClient client = new System.Net.WebClient(); 
client.Headers[HttpRequestHeader.ContentType] = "application/json"; 
client.BaseAddress = "ENDPOINT URL"; 
    string response = client.DownloadString(string.Format("{0}?{1}", Url, parameters.UrlEncode())); 

이보십시오.

var url = "YOUR_URL"; 
var client = new HttpClient(); 

var task = client.GetAsync(url); 
return task.Result.Content.ReadAsStringAsync().Result; 
+1

과 같은 다른 라이브러리에서는 Result를 사용하여 작업의 값을 읽을 수 없습니다! [await해야] (http://msdn.microsoft.com/en-us/magazine/jj991977.aspx)! – pikax

+0

@pikax : 팁 주셔서 감사. 값을 읽는데'Result()'를 사용해서는 안되는 이유는 무엇입니까? – SharpCoder

+2

@SharpCoder 그것은'await'을위한 것입니다. 'Result'를 호출하면 호출 스레드를 블로킹하여 비동기 이익을 잃게됩니다. 'await'을 사용할 수 없다면'ContinueWith'를 사용하여 비동기로 계속 작업 할 수 있습니다. 이것이 필요한 곳은 콘솔 프로그램의'Main' 메쏘드에 있습니다. –

3

당신은 WebRequest

// Create a request for the URL.  
var request = WebRequest.Create ("http://www.contoso.com/default.html"); 
request.ContentType = contentType; //your contentType, Json, text,etc. -- or comment, for text 
request.Method = method; //method, GET, POST, etc -- or comment for GET 
using(WebResponse resp = request.GetResponse()) 
{ 
    if(resp == null) 
     new Exception("Response is null"); 

    return resp.GetResponseStream();//Get stream 
} 
관련 문제