Pergunta

Eu tenho alguns HttpWebRequests e HttpWebResponses encadeados, também usando CookieContainer.

O código simula um usuário passar por três páginas diferentes 'Eu concordo' que definem a informação de cookie, entrando com nome de usuário e senha em um quarto, e fazendo um POST (search) no quinto retornar a resposta como uma string.

Existe uma maneira que eu possa manter o objeto HttpWebRequest como 'logado' para evitar passar por essas etapas cada vez que nenhum executa usuário uma pesquisa?

Can I configurá-lo como estático, e se o seu nulo ou faltando informações de cookie ele pode ser executado através de todos os passos de outra forma apenas fazer o post do usuário requer? O que é um bom padrão para isso?.

Foi útil?

Solução

Se o servidor que você está entrando para usos cookie de autenticação baseada em seguida, você deve criar um System.Net.CookieContainer onde armazenar o cookie de autenticação. Isto é bastante simples:

CookieContainer container = new CookieContainer();

// Create web request
request.CookieContainer = container;

// Create next web request
nextRequest.CookieContainer = container;

// And so on
...

Apenas reutilizar o objeto CookieContainer para todas as suas HttpWebRequest objetos, e mantê-lo na memória para uso posterior.

O CookieContainer é Serializable, para que possa persistir-lo em disco, se você precisa. Isso vai permitir que você mantenha o seu cookie (s) mesmo quando o usuário reinicia o aplicativo.

Como alternativa, se a página não usa cookies, mas lojas o ID da sessão na URL em vez disso, você precisa manter passagem ao longo da id de sessão na URL das páginas que Wisit. Basta anexar-lo para a url do e ele deve funcionar. : -)

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top