WebClient é uma classe muito útil quando você precisa fazer download ou upload de dados da ou para a web. Entretanto, quando você precisa fazer uma sequência de chamadas você vai perceber que o WebClient não preserva cookies atribuídos pelo servidor entre as requisições. Fezlimente, WebClient lhe dá a oportunidade para você mesmo gerenciar seus cookies.
Uma solução muito simples e que aprendi no blog It Could Be Done! é sobrescrever o método GetWebRequest da classe WebClient e atribuir a propriedade CookieContainer. Abaixo segue a minha implementação:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 |
public class ClienteWeb : WebClient { private CookieContainer cookies = new CookieContainer(); protected override WebRequest GetWebRequest(Uri endereco) { WebRequest requisicao = base.GetWebRequest(endereco); if (requisicao is HttpWebRequest) { (requisicao as HttpWebRequest).CookieContainer = cookies; } return requisicao; } } |
Eu testei na prática e funciona perfeitamente, por isso não resisti e tive de dar um re-post em pt-BR. Enjoy it!
Olá, tudo bem?
O que você achou deste conteúdo? Conte nos comentários.