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;
}
}
puesto nombre de usuario y contraseña en la cadena de consulta de la página. – atoMerz
No haga esto en texto sin formato. Solo estás pidiendo problemas. –