Sur le site MSDN, il y a un example of some C# code qui montre comment faire une requête Web avec des données POST'ed. Voici un extrait de ce code:Demande Web C# avec la question d'encodage POST
WebRequest request = WebRequest.Create ("http://www.contoso.com/PostAccepter.aspx ");
request.Method = "POST";
string postData = "This is a test that posts this string to a Web server.";
byte[] byteArray = Encoding.UTF8.GetBytes (postData); // (*)
request.ContentType = "application/x-www-form-urlencoded";
request.ContentLength = byteArray.Length;
Stream dataStream = request.GetRequestStream();
dataStream.Write (byteArray, 0, byteArray.Length);
dataStream.Close();
WebResponse response = request.GetResponse();
...more...
La ligne marquée (*)
est la ligne qui me déconcerte. Les données ne devraient-elles pas être encodées en utilisant la méthode UrlEncode plutôt que UTF8? N'est-ce pas ce que signifie application/x-www-form-urlencoded
?
application peut/x-www-form-urlencoded comprennent des caractères non ASCII? J'ai interprété cela comme signifiant non. http://www.w3.org/TR/html401/interact/forms.html#h-17.13.4.1 ou est-ce que je le comprends mal? –
Comme le note Martin Smith ci-dessus, 'application/x-www-form-urlencoded' indique que le contenu a été codé d'une manière spécifique. Comment utilise Encoding.UTF8 pour résoudre ce problème? – rlandster
@ Martin Smith: Je ne sais pas. Utilisez simplement la fonction UrlEncode pour encoder les noms et les valeurs et tout devrait bien se passer. Je pense que l'exemple utilise UTF8 parce que c'est ce que sont les chaînes littérales en C#. –