2010-10-25 6 views
0

Ceci est une application rapide et sale qui a seulement besoin de travailler pendant une courte période. Je ne suis pas développeur, alors ne me martelez pas. Le code suivant dans ASP fonctionne bien (informations secrètes remplacées par example.com et abc 123).C# Poster au navigateur échoue, des idées?

Je sais que le ci-dessous est très mauvaise pratique, mais cela est juste à des fins de démonstration:

<form method="post" action="https://example.com/asppage.aspx" id="frm_main"> 
<input type="hidden" name="STATE" id="STATE" value="ABC" /> 
<input type="hidden" name="VALIDATION" id="VALIDATION" value="123/> 
<input type="submit" name="refresh_progress" value="Check Status" id="refresh_progress" /></form> 

Cependant, le même code dans mon C# poste ne fonctionne pas:

string PostData = "STATE=ABC&amp;VALIDATION=123"; 
webBrowser1.Navigate("https://example.com/asppage.aspx", "_blank", Encoding.Default.GetBytes(PostData), "Content-Type: application/x-www-form-urlencoded\n\r"); 

Lorsque la nouvelle fenêtre du navigateur apparaît, c'est le formulaire asppage.aspx par défaut sans données postées.

Des idées que je fais mal?

+1

l'exemple ne contient pas d'échappement de devis (après la valeur ABC et 123) .. est-ce juste dans le post? – Fosco

+0

oui, juste dans ce post, j'ai corrigé la faute de frappe. Le code a les échappées correctes. – shaiss

Répondre

0

Votre format POST est complètement faux. Voir le specification.

+0

J'ai corrigé quelques fautes de frappe, ce lien explique quelques infos postales, mais je ne suis pas développeur par métier, donc c'est un peu déroutant. Pourriez-vous élaborer s'il vous plaît. – shaiss

1

Vous donnez au webBrowser le html du formulaire, les données POST sont un format sérialisé des noms et des valeurs des champs de formulaire qui est ce que vous devez mettre dans votre méthode Navigate.

Le postdata doit être au format:

inputname1=value1&inputname2=value2&inputname3=value3

Vous devrez également uri encode la chaîne et comprennent Content-Type: application/x-www-form-urlencoded comme le quatrième paramètre dans l'appel de méthode.

+0

Merci pour la direction, pourriez-vous élaborer plus s'il vous plaît. J'ai essayé 'string PostData =" QUJD ";' qui est codé en Base64 par ABC. Est-ce que les bonnes données "sérialisées"? – shaiss

+0

Voir les réponses éditées – Chao

+0

J'ai corrigé le format de message ci-dessus selon votre suggestion, cependant, toujours pas de chance. On dirait que je me rapproche, mais je manque juste quelque chose de petit. – shaiss

Questions connexes