Ver Mensaje Individual
  #3 (permalink)  
Antiguo 23/09/2008, 15:47
Avatar de Peterpay
Peterpay
Colaborador
 
Fecha de Ingreso: septiembre-2007
Ubicación: San Francisco, United States
Mensajes: 3.858
Antigüedad: 17 años, 6 meses
Puntos: 87
Respuesta: Cargar formularios web desde aplicacion win.

puedes usar

HtmlElement y hacer un Invoke algo como esto

HtmlElement el = webBrowser1.Document.All["btnI"];
if (el != null) el.InvokeMember("click");


y hacer lo mismo de los inputs o de los selects de tu pagina html para poder setearles el valor y simular el envio del formulario.

ahora que si lo quieres hacer mas optimo puedes hacer lo mismo sin tener GUI o consumo excesivo de recursos usando HttpWebRequest o un WebClient en ambos casos tendrias que usar un metodo post o get dependiendo el formulario al que quieras enviar.

es decir supongamos que quieres que tu aplicacion win envie las credenciales y simule un login en la pagina solo requieres hacer algo como esto

public void Login(string email, string password)
{
HttpWebRequest request;
HttpWebResponse response;
CookieContainer cookies;

#region Login Request;

string url = "https://tusitioweb.com/";
string data = string.Format("email={0}&pword={1}&remeber=1&action=login", email, password); // AQUI ESTA EL PUNTO CLAVE DEL ASUNTO ---- NECESITAS ENVIAR LOS PARAMETROS TAL COMO APAREZCAN EN TU FORMULARIO esto es solo un ejemplo.
byte[] encodeddata = Encoding.ASCII.GetBytes(data);
request = (HttpWebRequest)WebRequest.Create(url);
request.AllowAutoRedirect = false; // esta en falso pero puede ser verdadero por si el sitio hace un redirect o tiene una pagina en la q tengas q elegir alguna otra opcion
request.CookieContainer = new CookieContainer();
request.Method = "POST";
request.ContentType = "multipart/";
request.ContentLength = encodeddata.Length;
Stream datawriter = request.GetRequestStream();

datawriter.Write(encodeddata, 0, encodeddata.Length); // Grabamos los datos a enviar a la pagina web.
datawriter.Close();

response = null;
try
{
response = (HttpWebResponse)request.GetResponse();
}
catch (Exception ex)
{
return ex.Message;
}

if (response.StatusCode != HttpStatusCode.Found) // si no fue exitoso el login o no esta disponible
{
Console.WriteLine("Server Unreachable");
response.Close();
request.KeepAlive = false;
return string.Empty;
}



#endregion



#region Transferido desde el login
CookieContainer mineCC = new CookieContainer();
mineCC.Add(response.Cookies);
response.Close();
string menu = string.Empty;
request = (HttpWebRequest)WebRequest.Create(address);
request.AllowAutoRedirect = true;
request.CookieContainer = mineCC;
request.KeepAlive = true;
try
{
response = (HttpWebResponse)request.GetResponse();
}
catch (Exception ex)
{
return ex.Message;
}

#endregion



mineCC.Add(response.Cookies);

response.Close();

}
__________________
Curso WF4
http://cursos.gurudotnet.com/ DF
Aprende HTML5