Bonjour à tous,

J'ai écumé le web, forums & co et je me retourne maintenant vers vous car je sèche sur le problème (hautement technique suivant) : remplir un pauvre formulaire post login/password et soumettre en C#... Désolé du côté noobz de la question...

Je tente de remplir le formulaire suivant :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
 
<script type="text/javascript">
<!--
function process_form(the_form)
{
	var element_names = new Object()
	element_names["req_username"] = "Nom d\'utilisateur"
	element_names["req_password"] = "Mot de passe"
 
	if (document.all || document.getElementById)
	{
		for (i = 0; i < the_form.length; ++i)
		{
			var elem = the_form.elements[i]
			if (elem.name && elem.name.substring(0, 4) == "req_")
			{
				if (elem.type && (elem.type=="text" || elem.type=="textarea" || elem.type=="password" || elem.type=="file") && elem.value=='')
				{
					alert("\"" + element_names[elem.name] + "\" doit etre rempli")
					elem.focus()
					return false
				}
			}
		}
	}
 
	return true
}
// -->
</script>
et
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
 
<form id="login" method="post" action="login.php?action=in" onsubmit="return process_form(this)">
	<div class="inform">
		<fieldset>
			<legend>Saisissez votre nom d'utilisateur et votre mot de passe ci-dessous</legend>
			<div class="infldset">
				<input type="hidden" name="form_sent" value="1" />
				<input type="hidden" name="redirect_url" value="index.php" />
				<label class="conl"><strong>Nom d'utilisateur</strong><br /><input type="text" name="req_username" size="25" maxlength="25" tabindex="1" /><br /></label>
				<label class="conl"><strong>Mot de passe</strong><br /><input type="password" name="req_password" size="16" maxlength="16" tabindex="2" /><br /></label>
			</div>
		</fieldset>
	</div>
	<p><input type="submit" name="login" value="Connexion" tabindex="3" /></p>
</form>
Quand j'examine la requête via les outils classiques, j'ai
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
 
POST /login.php?action=in HTTP/1.1
Host: forum.monsite.org
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8
Accept-Encoding: gzip, deflate
Accept-Language: fr-FR,fr;q=0.8,en-US;q=0.6,en;q=0.4
Content-Type: application/x-www-form-urlencoded
Origin: http://forum.monsite.org
Referer: http://forum.monsite.org/login.php
Upgrade-Insecure-Requests: 1
User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10_10_4) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/44.0.2403.157 Safari/537.36
 
HTTP/1.1 200 OK
Cache-Control: post-check=0, pre-check=0
Content-Encoding: gzip
Content-Length: 1179
Content-Type: text/html; charset=iso-8859-15
Date: Wed, 26 Aug 2015 17:52:44 GMT
Expires: Thu, 21 Jul 1977 07:30:00 GMT
Last-Modified: Wed, 26 Aug 2015 17:52:44 GMT
Pragma: no-cache
Server: Apache/2.2.29
Vary: Accept-Encoding
Et enfin, j'ai le code (hyper classique, il me semble) suivant :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
 
var request = (HttpWebRequest)WebRequest.Create("http://forum.monsite.org/login.php?action=in");
request.Method = "POST";
request.ContentType = "application/x-www-form-urlencoded";
byte[] bytes = Encoding.ASCII.GetBytes("req_username=xxxx&req_password=yyyy");
request.ContentLength = bytes.Length;
using (var reqStream = request.GetRequestStream())
{
  reqStream.Write(bytes, 0, bytes.Length);
}
var response = (HttpWebResponse)request.GetResponse();
J'ai aussi essayé la variante suivante :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
 
using (var client = new WebClient ()) {
  client.Headers.Add("Content-Type", "application/x-www-form-urlencoded");
  var values = new NameValueCollection();
  values["form_sent"] = "1";
  values["redirect_url"] = "index.php";
  values["req_username"] = "xxxx";
  values["req_password"] = "yyyy";
  values["login"] = "Connexion";
 
  var response = client.UploadValues("http://forum.monsite.org/login.php", "POST", values);
}
J'ai ici rempli les champs hidden mais je ne sais pas si c'est important...

Bref tout cela ne fonctionne pas et je sèche. J'imagine que c'est les headers qui sont foireux mais je ne sais pas trop quoi faire... Un petit coup de main serait vraiment le bienvenu!! Je vous remercie d'avance