Sei que é muito tempo para responder, mas apenas como um objetivo informativo para futuros leitores:
WebRequest
System.Object
System.MarshalByRefObject
System.Net.WebRequest
A WebRequest
é uma classe base abstrata. Então você realmente não o usa diretamente. Você o usa através das classes derivadas - HttpWebRequest
e FileWebRequest
.
Você usa o método Create de WebRequest
para criar uma instância de WebRequest
. GetResponseStream
retorna data stream
.
Existem também FileWebRequest
e FtpWebRequest
classes que inherit
de WebRequest
. Normalmente, você costuma WebRequest
fazer, bem, fazer uma solicitação e converter o retorno em HttpWebRequest
, FileWebRequest
ou FtpWebRequest
, depende da sua solicitação. Abaixo está um exemplo:
Exemplo:
var _request = (HttpWebRequest)WebRequest.Create("http://stackverflow.com");
var _response = (HttpWebResponse)_request.GetResponse();
Cliente da web
System.Object
System.MarshalByRefObject
System.ComponentModel.Component
System.Net.WebClient
WebClient
fornece operações comuns sending
e receiving
dados de um recurso identificado por a URI
. Simplesmente, é uma abstração de nível superior de HttpWebRequest
. A '' operações comuns é o que diferencia WebClient
a partir de HttpWebRequest
, como também mostrado no exemplo abaixo:
Exemplo:
var _client = new WebClient();
var _stackContent = _client.DownloadString("http://stackverflow.com");
Também existem DownloadData
e DownloadFile
operações sob WebClient
instância. Essas operações comuns também simplificam o código do que normalmente faríamos HttpWebRequest
. Usando HttpWebRequest
, temos que obter a resposta da nossa solicitação, instanciar StreamReader
para ler a resposta e, finalmente, converter o resultado para o tipo que esperamos. Com WebClient
, simplesmente chamamos DownloadData, DownloadFile or DownloadString
.
No entanto, lembre-se de que WebClient.DownloadString
não considera encoding
o recurso que você está solicitando. Portanto, você provavelmente acabaria recebendo caracteres estranhos se não especificar e codificar.
OBSERVAÇÃO: Basicamente "o WebClient usa poucas linhas de código em comparação com o Webrequest "
ServicePointManager.Expect100Continue = false
, faz outras coisas fora do padrão e tem muitas peculiaridades e idiossincrasias. Iniciei o RestSharp para ajudar a resolver esses problemas.