성취 할 수있는 대부분은 수업으로 HttpWebRequest/Response
도 달성 할 수있는 것 같습니다 WebClient
. 에 WebClient
대한 고급 래퍼 인 어딘가를 읽었습니다 WebRequest/Response
.
지금까지로 수행 HttpWebRequest/Response
할 수없는 WebClient
HttpWebRequest / Response가 더 세밀한 제어를 제공하는 곳 을 볼 수 없습니다 .
언제 WebClient를 사용해야 HttpWebRequest/Response
합니까? (분명히 HttpWebRequest/Response
HTTP에 따라 다릅니다.)
그렇다면 HttpWebRequest/Response
저수준이라면 WebClient
무엇을 달성 HttpWebRequest/Response
할 수 WebClient
없는가?
답변
를 사용 HttpWebRequest
하면 요청을보다 세밀하게 제어 할 수 있습니다. 쿠키, 헤더, 프로토콜 등을 설정할 수 있습니다. 응답으로 쿠키 및 헤더를 검색 할 수도 있습니다.
답변
HttpWebRequest
Keep-Alive 사용 여부, 사용할 연결 풀, 쓰기 버퍼링 여부 등과 같은 세밀한 프로토콜 제어를 가능하게하는 훨씬 더 많은 항목을 노출합니다.
WebClient
WebClient
기본 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 무시하다 ContentType
의 charset
당신이 응답 텍스트를 얻기 위해 그것을 사용할 때 값입니다. Encoding
속성을 통해 인코딩을 명시 적으로 설정해야 합니다.
답변
HttpWebrquest는 압축을 허용하지만 Net.WebClient 클래스는 HTTP 압축을 지원하지 않습니다.
답변
“HtttpWebRequest”는 .NET 4.5에서 사용되지 않습니다. 이제이 클래스는 내부 전용입니다.