2010-05-17 2 views
1

J'ai regardé/demander autour et ne peux pas sembler comprendre celui-ci. J'ai une application C# et doit être capable de rassembler des données dans l'application, pop ouvrir un navigateur Web et POSTER des données à ce sujet.POST à ​​une page Web de l'application C#

Je peux poster sur le site à partir de l'application bien et je peux évidemment pop ouvert IE à un certain lien, mais je ne peux pas faire les deux. Je ne peux pas poster directement à ce lien. Des idées sur la façon d'accomplir cela?

private void btnSubmit_Click(object sender, EventArgs e) 
    { 
     ASCIIEncoding encoding = new ASCIIEncoding(); 
     string postData = "Fullname=Test"; 
     byte[] data = encoding.GetBytes(postData); 

     // Prepare web request... 
     HttpWebRequest myRequest = (HttpWebRequest)WebRequest.Create("http://www.url.com/Default.aspx"); 
     myRequest.Method = "POST"; 
     myRequest.ContentType = "application/x-www-form-urlencoded"; 
     myRequest.ContentLength = data.Length; 

     Stream newStream = myRequest.GetRequestStream(); 

     // Send the data. 
     newStream.Write(data, 0, data.Length); 
     System.Diagnostics.Process.Start(myRequest.Address.ToString()); //open browser 
     newStream.Close(); 
    } 

Tout aperçu serait grandement apprécié.

Merci

Répondre

3

S'il s'agit d'une application WinForms, vous pouvez utiliser le contrôle WebBrowser pour héberger une instance d'Internet Explorer dans votre application au lieu de générer un nouveau processus. L'avantage de ceci est que vous avez le plein contrôle sur et entre autres que vous pourriez envoyer à une URL:

private void btnSubmit_Click(object sender, EventArgs e) 
{ 
    var postData = Encoding.Default.GetBytes("Fullname=Test"); 
    webBrowser1.Navigate(
     "http://www.url.com/Default.aspx", 
     null, 
     postData, 
     "Content-Type: application/x-www-form-urlencoded" + Environment.NewLine 
    ); 
} 
+0

Cela fonctionne très bien et devra être la solution s'il n'y a pas moyen d'ouvrir réellement un nouveau navigateur fenêtre et POST à ​​cela. Merci Darin. – markiyanm

0

Vous pouvez régler le PostBackUrl property dans un bouton (ou LinkButton ou ImageButton)

Cependant, qui fera le poste ASP.NET standard (avec ViewState, etc.)

Selon sur ce que vous voulez faire, vous pouvez également créer un fichier séparé qui n'a pas runat = "serveur" et vous pouvez ensuite définir le formulaire action property à votre page.

Editer: Ne vous dérangez pas, si vous avez une application Windows (pas une application web) cela ne fonctionnera pas. Au moins, pas directement.

Questions connexes