2011-05-03 20 views
5

Deseo publicar el nombre de usuario y la contraseña en una página de inicio de sesión de un sitio web remoto utilizando asp.net y pasarlo, para acceder a las páginas requeridas para iniciar sesión en el sitio web. En otras palabras, supongamos que hay una página en un sitio web que me gustaría navegar y tomar algo de ella, pero antes se requiere iniciar sesión. cómo llamar a esa página de inicio de sesión y publicar el nombre de usuario y la contraseña de la aplicación asp.net para aprobarlo.Publicar nombre de usuario y contraseña para iniciar sesión en la página programáticamente

Gracias de antemano

+0

puesto nombre de usuario y contraseña en la cadena de consulta de la página. – atoMerz

+4

No haga esto en texto sin formato. Solo estás pidiendo problemas. –

Respuesta

6

El comentario con pasarlos como la cadena de consulta sólo funciona para GET parámetros. Esto funciona para POST. Como puede ver, utilizo las entradas de formulario username, password y login (el botón), pero en su caso podrían ser valores completamente diferentes. Por lo tanto, use una herramienta como Fiddler para ver qué valores está enviando un inicio de sesión normal. Cuando hice algo similar, tuve que usar un webclient compatible con cookies porque el servicio usaba cookies para los valores de la sesión. El servicio al que intenta acceder podría usar una cadena de sesión de consulta; depende completamente del servicio.

Otro problema que encontré al hacer esto fue que tuve que buscar una identificación de sesión de la página html y la envié para iniciar sesión. No he incluido el código para que aquí, pero tengo que si usted lo necesita :)

var client = new CookieAwareWebClient(); 
client.Encoding = Encoding.UTF8; 

// Post values 

var values = new NameValueCollection(); 
values.Add("username", someusername); 
values.Add("password", somepassword); 
values.Add("login", "Login"); //The button 

// Logging in 
client.UploadValues(loginPageUrl, values); // You may verify the result. It works with https :) 

// Download some secret page 

var html= client.DownloadString(someurl); 

CookieAwareWebClient

public class CookieAwareWebClient : WebClient 
{ 
    private CookieContainer cookieContainer = new CookieContainer(); 

    protected override WebRequest GetWebRequest(Uri address) 
    { 
     WebRequest request = base.GetWebRequest(address); 
     if (request is HttpWebRequest) 
     { 
      (request as HttpWebRequest).CookieContainer = cookieContainer; 
     } 
     return request; 
    } 
} 
+0

gracias lasseespeholt pero ¿cuáles son esos primeros parámetros de NameValueColection? ¿Existe el nombre o ID de los controles? ¿Qué pasa con el último (values.Add ("login", "Login");); primer y segundo parámetro? –

+0

@ user711861 Debe encontrar los valores que tiene para enviarse usted mismo. Supongo que no tienes control sobre el sitio (de lo contrario, esta es una forma bastante mala de hacerlo). Recomiendo Fiddler, donde puedes ver los valores enviados de vuelta. 'name = login, value = Login' es simplemente un botón que tuve que enviar con él, así que la llamada actuó como presionar el botón. –

+0

Entiendo que este es un comentario de hace un año, pero su código me ayudó. Pero, de nuevo, ¿cómo puse esta cadena html en un div del código detrás de primo si trato de abrir un enlace después de la autenticación, se cierra la sesión. Pero si utilizo su verificador, es decir, client.DownloadString (... "entonces me muestra conectado. – Ratan

0

Vamos a suponga que desea redriect a www.ABC.com

constructo cadena de consulta como

http://abc.com/products.aspx?field1=value1&field2=value2 

Un d obtener este valor en la otra página. Sin embargo, se recomienda utilizar el método POST, espero que esto ayuda

Cuestiones relacionadas