.NET에서 WebClient와 HTTPWebRequest 클래스 사이에는 어떤 차이점이 있습니까?
.NET WebClient
의 HttpWebRequest
클래스 와 클래스 의 차이점은 무엇입니까 ? 둘 다 매우 비슷한 일을합니다. 실제로 왜 하나의 클래스로 병합되지 않았습니까 (너무 많은 메소드 / 변수 등이 한 가지 이유 일 수 있지만 .NET에는 해당 규칙을 위반하는 다른 클래스가 있습니다).
감사.
WebClient는 가장 일반적인 작업을 단순화하기 위해 HttpWebRequest를 기반으로 구축 된 고급 추상화입니다. 예를 들어, HttpWebResponse에서 컨텐츠를 가져 오려면 응답 스트림에서 읽어야합니다.
var http = (HttpWebRequest)WebRequest.Create("http://example.com");
var response = http.GetResponse();
var stream = response.GetResponseStream();
var sr = new StreamReader(stream);
var content = sr.ReadToEnd();
WebClient를 사용하면 다음을 수행 할 수 있습니다 DownloadString
.
var client = new WebClient();
var content = client.DownloadString("http://example.com");
참고 : using
간결하게하기 위해 두 예제 의 진술을 모두 생략했습니다. 웹 요청 객체를 올바르게 처리해야합니다.
일반적으로 WebClient는 빠르고 더러운 단순 요청에 적합하며 HttpWebRequest는 전체 요청에 대한 더 많은 제어가 필요한 경우에 적합합니다.
또한 WebClient에는 시간 초과 속성이 없습니다. dafault 값이 100 초이고 인터넷에 연결되어 있지 않은지를 나타내기에는 너무 많기 때문에 이것이 문제입니다.
해당 문제에 대한 해결 방법은 https : //.com/a/3052637/1303422
답장이 너무 길어서 미래 독자를위한 정보 목적으로 알고 있습니다.
WebRequest
System.Object
System.MarshalByRefObject
System.Net.WebRequest
는 WebRequest
추상 기본 클래스입니다. 따라서 실제로 직접 사용하지 마십시오. 파생 클래스를 통해 사용합니다- HttpWebRequest
및 FileWebRequest
.
의 메소드 WebRequest
를 사용하여의 인스턴스를 만듭니다 WebRequest
. GetResponseStream
을 반환합니다 data stream
.
이 또한 FileWebRequest
및 FtpWebRequest
클래스 그 inherit
에서 WebRequest
. 일반적으로, 사용하는 것이 WebRequest
, 음,에 요청을하고 하나의 반환을 변환 HttpWebRequest
, FileWebRequest
또는 FtpWebRequest
귀하의 요청에 따라 달라집니다. 아래는 예입니다.
예:
var _request = (HttpWebRequest)WebRequest.Create("http://stackverflow.com");
var _response = (HttpWebResponse)_request.GetResponse();
웹 클라이언트
System.Object
System.MarshalByRefObject
System.ComponentModel.Component
System.Net.WebClient
WebClient
로 식별되는 리소스에 대한 공통 작업 sending
과 receiving
데이터를 제공 합니다 URI
. 간단히 말해서, 이는보다 높은 수준의 추상화입니다 HttpWebRequest
. 이 '일반적인 작업은'차별화 무엇 WebClient
으로부터 HttpWebRequest
도 아래 예제와 같이 :
예:
var _client = new WebClient();
var _stackContent = _client.DownloadString("http://stackverflow.com");
인스턴스가 DownloadData
있고 DownloadFile
작업 도 있습니다 WebClient
. 이러한 일반적인 작업은 또한 일반적으로 수행 할 작업의 코드를 단순화합니다 HttpWebRequest
. 를 사용하여 HttpWebRequest
요청에 대한 응답을 얻어 응답 StreamReader
을 읽고 인스턴스화 한 다음 결과를 원하는 유형으로 변환해야합니다. 로 WebClient
, 우리는 단순히 호출 DownloadData, DownloadFile or DownloadString
합니다.
그러나 요청한 리소스는 WebClient.DownloadString
고려하지 않습니다 encoding
. 따라서 지정하고 인코딩하지 않으면 이상한 문자가 표시 될 수 있습니다.
참고 : 기본적으로 " WebClient 는 Webrequest 와 비교하여 몇 줄의 코드를 사용합니다 "
'Programing' 카테고리의 다른 글
OS X의`date` 명령에는 ISO 8601`-I` 옵션이 없습니까? (0) | 2020.05.22 |
---|---|
mysql 데이터베이스에서 문자열의 모든 항목 검색 (0) | 2020.05.22 |
apt-get으로 설치 한 경우에도 docker 명령을 찾을 수 없습니다 (0) | 2020.05.21 |
Java로 패키지를 어떻게 문서화합니까? (0) | 2020.05.21 |
팬더는 헤더없이 테이블에서 읽습니다. (0) | 2020.05.21 |