반응형
    
    
    
  웹서비스사용시 WebClient를 사용하여 POST요청을 하여 서버에 응답 받을 수 있습니다. 이때 WebClient의 경우 TimeOut속성이 없기때문에 타임아웃을 사용하려면 상속을 받아서 처리해야합니다. 
1. WebClientTester.cs소스파일 
WebClient대신에 MyWebClient클래스를 호출합니다. WebClient는 TimeOut값이 없어서 MyWebClient 클래스에 타임아웃값을 설정 할 수 있게 WebClient를 상속받아서 TimeOut처리부를 구현합니다.
| 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 | using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; using System.Net; namespace WebClientTester {     class Program     {         static void Main(string[] args)         {             string url = "http://127.0.0.1:44358/api/TodoItems";             string data = "{\"name\": \"walk dog\",\"isComplete\": true}";             MyWebClient webClient = new MyWebClient(5000);             webClient.Headers[HttpRequestHeader.ContentType] = "application/json";             webClient.Encoding = UTF8Encoding.UTF8;             //UploadString호출시 MyWebClient.GetWebRequest메소드에서 타임아웃시간까지 //응답이 없으면 예외발생             string result = webClient.UploadString(url, data);         }     } } | |
2. MyWebClient.cs소스파일 
WebClient클래스를 상속을 받은 후 GetWebRequest메소드 호출의 경우도 override하여 TimeOut(밀리세컨드)값을 설정합니다. 설정된 타임아웃이 지나면 
| 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 | using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; using System.Net; namespace WebClientTester {     class MyWebClient : WebClient     {         int mTimeOut;         public MyWebClient(int timeOut)         {             mTimeOut = timeOut;         }         protected override WebRequest GetWebRequest(Uri address)         {             WebRequest request = base.GetWebRequest(address);             request.Timeout = mTimeOut;             return request;         }     } } | |
MSDN홈페이지에서 WebClient를 찾아보면 새개발에는 가능하면 사용하지 않는게 좋다고 하며 대신에 HttpClient클래스를 사용하는게 좋다고 하니 참고하시기 바랍니다.
https://learn.microsoft.com/ko-kr/dotnet/api/system.net.webclient?view=net-7.0

반응형
    
    
    
  '프로그래밍 > C#' 카테고리의 다른 글
| [C#] MSSQL 저장프로시저 사용하기 (0) | 2022.12.26 | 
|---|---|
| [C#] MSSQL 연동방법 (0) | 2022.12.16 | 
| [C#] 다국어 처리 방법(MultiLanguage) (0) | 2022.10.28 | 
| [C#] 서비스프로그램 만들기 (0) | 2022.10.22 | 
| [C#] Base64인코딩/디코딩 , Http Basic Auth (0) | 2022.10.07 |