[.net] 웹 클라이언트와 HttpWebRequest / HttpWebResponse

성취 할 수있는 대부분은 수업으로 HttpWebRequest/Response도 달성 할 수있는 것 같습니다 WebClient. 에 WebClient대한 고급 래퍼 인 어딘가를 읽었습니다 WebRequest/Response.
지금까지로 수행 HttpWebRequest/Response할 수없는 WebClientHttpWebRequest / Response가 더 세밀한 제어를 제공하는 곳 을 볼 수 없습니다 .

언제 WebClient를 사용해야 HttpWebRequest/Response합니까? (분명히 HttpWebRequest/ResponseHTTP에 따라 다릅니다.)

그렇다면 HttpWebRequest/Response저수준이라면 WebClient무엇을 달성 HttpWebRequest/Response할 수 WebClient없는가?



답변

를 사용 HttpWebRequest하면 요청을보다 세밀하게 제어 할 수 있습니다. 쿠키, 헤더, 프로토콜 등을 설정할 수 있습니다. 응답으로 쿠키 및 헤더를 검색 할 수도 있습니다.


답변

HttpWebRequest Keep-Alive 사용 여부, 사용할 연결 풀, 쓰기 버퍼링 여부 등과 같은 세밀한 프로토콜 제어를 가능하게하는 훨씬 더 많은 항목을 노출합니다.

WebClientWebClient기본 Request 객체 에서 서브 클래스로 액세스 할 수 있지만 모든 것을 공개하지는 않습니다 .

WebClient(: POST / GET / 양식 업로드 등)과 생성하고 관리 할 수 방해하지 못할 방금 작업을 수행 할 이러한 상황에 유용합니다 HttpWebRequest, RequestStream, HttpWebResponse, 및 응답 스트림을.


답변

Tim Heuer의 블로그에서-http: //timheuer.com/blog/archive/2008/03/14/calling-web-services-with-silverlight-2.aspx

대신 Silverlight에서는 WebClient 또는 HttpWebRequest를 사용하려고합니다. 차이점이 뭐야? 다음은 timheuer 버전입니다. WebClient는 GET 요청을 쉽게 수행하고 응답 스트림을 얻는 간단한 구현입니다. HttpWebRequest는 요청을 조금 더 세밀하게 제어하고 헤더 또는 기타 사용자 정의를 보내야 할 때 유용합니다.


답변

웹 클라이언트의 데이터가 인터넷에서 다운로드되는 동안 사용자 인터페이스 스레드에서 수업 실행, 그래서 사용자 인터페이스가 응답하지 않습니다. 반면에 HttpWebRequest 클래스는 사용자 인터페이스 스레드를 차단하지 않으며 응용 프로그램이 응답합니다. 따라서 인터넷에서 대량의 데이터를 다운로드하거나 데이터 소스의 액세스 속도가 느린 앱에서는 HttpWebRequest 클래스를 사용해야합니다. 다른 모든 경우에는 WebClient 클래스를 사용해야합니다.


답변

의 또 다른 단점은 WebClient그것이 HTTP 무시하다 ContentTypecharset당신이 응답 텍스트를 얻기 위해 그것을 사용할 때 값입니다. Encoding속성을 통해 인코딩을 명시 적으로 설정해야 합니다.


답변

HttpWebrquest는 압축을 허용하지만 Net.WebClient 클래스는 HTTP 압축을 지원하지 않습니다.


답변

“HtttpWebRequest”는 .NET 4.5에서 사용되지 않습니다. 이제이 클래스는 내부 전용입니다.