반응형
.Net5를 사용하다가, VS2022 사용을 위해 프로젝트 .Net6 버전업을 결정.
.Net6 버전업을 하고 난 다음 빌드를 하니 경고에 떡하니 아래와 같은 메세지가 발생했다.
구글링해서 아래와 같은 내용을 발견했다.
https://learn.microsoft.com/ko-kr/dotnet/core/compatibility/networking/6.0/webrequest-deprecated
WebRequest, WebClient, ServicePoint 클래스를 사용하지말고, HttpClient 클래스를 이용해라.
빌드했을때, 경고 메세지가 지속적으로 발생하여 HttpClient로 변경하기로 결정.
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
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
|
// WebRequest 사용.
var request = WebRequest.Create(uri) as HttpWebRequest;
request.Method = HttpMethod.Get.ToString();
// 헤더 추가.
if ((headers?.Count ?? 0) > 0) {
foreach (var key in headers.Keys) {
request.Headers.Add(key, headers[key]);
}
}
var result = Empty;
try {
// ASYNC: using awaitable wrapper to get response
var response = (HttpWebResponse)await request.GetResponseAsync();
if (response != null) {
var reader = new StreamReader(response.GetResponseStream());
// ASYNC: using StreamReader's async method to read to end, in case
// the stream i slarge.
result = await reader.ReadToEndAsync();
}
} catch (WebException we) {
var reader = new StreamReader(we.Response.GetResponseStream());
result = reader.ReadToEnd();
}
///////////////////////////////////////////////////////////////////////////////////
// HttpClient 사용.
using (var client = new HttpClient()) {
client.DefaultRequestHeaders.Accept.Clear();
// 헤더 추가.
if ((headers?.Count ?? 0) > 0) {
foreach (var key in headers.Keys) {
client.DefaultRequestHeaders.Add(key, headers[key]);
}
}
using (var response = await client.GetAsync(uri)) {
response.EnsureSuccessStatusCode();
return await response.Content.ReadAsStringAsync();
}
}
|
cs |
코드량도 짧아지고 나이스해졌다.
확실히 .Net 6에서 개발하니 조금 더 좋은 코드가 생산될 것 같다.
반응형
'개발 > C#' 카테고리의 다른 글
[C#] StringBuilder를 사용해야 하는 이유 (4) | 2021.04.11 |
---|---|
[C#] Google SpreadSheets V4 데이터 추가/수정/읽기. (0) | 2021.03.29 |
[C#] string <=> char[] 형변환(Convert)하기. (0) | 2021.03.10 |
[C#] ENUM(열거형)을 적극 사용하자. (2) | 2021.01.04 |
[C#] LINQ, 객체 속성 예외/중복 삭제(차집합) (0) | 2020.11.02 |