Pergunta

Eu sou um cara de sistemas e atualmente fazendo um projeto de desenvolvimento web tempo parcial por isso sou muito novo para isso. Eu estou tentando escrever um cliente http para www.portapower.com.

Ele vai para certos itens que são postadas no site e se eles correspondem a uma exigência particular que irá imprimir uma mensagem.

Enquanto a tentar aceder a esta página:

http://www.portapower.com /getbainfo.php?fclasscode=1&code=CB1831B.40H&fbrand=QUNFUg==

O site me redireciona para uma página padrão de registro:

http://www.portapower.com/defaregit.php

Aqui está um trecho do que eu codificado:

CookieContainer myContainer = new CookieContainer();

HttpWebRequest request = (HttpWebRequest)
WebRequest.Create("http://www.portapower.com/" + urlpart);
request.Credentials = new NetworkCredential("****", "******");
request.CookieContainer = myContainer;
request.PreAuthenticate = true;
request.Method = "POST";
HttpWebResponse response = (HttpWebResponse)
request.GetResponse();

Console.WriteLine(response.StatusCode);
Stream resStream = response.GetResponseStream();
Console.WriteLine(resStream.ToString());

Eu tenho o nome de usuário e senha e ele funciona muito bem quando usado a partir de um browser. Por favor me diga se isso de forma correta para acessar uma página autenticado.

Foi útil?

Solução

Depende de como o site é a autenticação de usuários. Se eles estão usando autenticação básica ou a autenticação do Windows, então você pode definir o Credentials propriedade do HttpWebRequest classe para o / senha / informações de domínio nome de usuário e ele deve funcionar.

No entanto, parece que você tem que digitar o nome de usuário / senha no site, o que significa que você vai ter para acessar o site pela primeira vez. Olhando para a página principal, é isso que eu encontrar no elemento <form> que alças sessão:

<form name="formlogin" method="post" action="./defalogin.php" >
  <input name="emtext" type="text" id="emtext" size="12">
  <input name="pstext" type="password" id="pstext" size="12">
  <input type="submit" name="Submit" value="Logn in" 
    onClick="return logincheck()" >
</form>

Eu incluí apenas as partes relevantes.

Diante disso, você tem que ir para a página ./defalogin.php primeiro com o os valores HttpWebRequest e emtext pstext e POST. Além disso, certifique-se de definir o CookieContainer propriedade a uma instância do CookieContainer . Quando essa chamada aos retornos do POST, que é mais do que provavelmente vai ser preenchido com um cookie que você terá que enviar de volta para o site. Basta manter a configuração da propriedade CookieContainer em todas as instâncias HttpWebRequest posteriores a essa CookieContainer para garantir que os cookies são repassados.

Então você teria que ir para a página indicada no link.

É preocupante também a função javascript logincheck, mas olhando para as fontes de script, ele não faz nada digno de nota.

Outras dicas

As credenciais que você está passando é para autenticação do Windows. Você precisa enviar dados de postagem com dados que imita a apresentação de um formulário, em seguida, CapTrue o conjunto cookie de sessão nos ans de resposta usar esse cookie para futuras solicitações

Dê uma olhada nesta resposta que tem o código para fazer isso:

Entrada para a página com HttpWebRequest

Você não pode fazê-lo desta maneira; as credenciais que você está passando podem ser usados ??com um esquema de autenticação básica (ou seja, onde, no navegador, você recebe uma caixa de diálogo nome de usuário / senha aparecendo.) Você vai ter que simular a entrada dos dados em que forma e pegar o cookie de login e usar isso.

A classe NetworkCredential é realmente para controlar as credenciais do Windows regulares (NTLM, Kerberos, etc).

Esse site é um site PHP em execução no Apache, então eu não acho que eles estão usando NTLM ou Kerberos.

O que você quer fazer é adicionar alguns campos de formulário no site, em seguida, manter o cookie você voltar. Certifique-se sobre os pedidos posteriores você empurrar a volta cookie para o site para que ele saiba que você já tenha identificado.

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