Bonjour,
Je vous contact et demande l'aide de la communauté car je suis face à un problème relativement simple mais dont je n'arrive pas à trouver la solution.
Je souhaite envoyer à un serveur distant, via la méthode POST (GET est aussi possible), trois paramètres (login, password et postblog). Le tout devant être encodé en UTF-8.
Tout cela marche très bien, sauf lors de l'utilisation d'accent (ô, ê, € etc..) dans le paramètre postblog. J'ai une exception levé car le seveur distant retourne une erreur 500 (problème interne serveur).
Le serveur distant fonctionne très bien et d'après mon analyse il s'agit d'un problème d'encodage des paramètres..
En php, j'utilise les fonctions : utf8_encode() suivi de urlencode() et cela fonctionne très bien.
Avez vous déjà rencontré cette difficulté ? Si oui comment la résoudre ?
Voici mon code et merci pour votre aide.
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 HttpWebRequest request = (HttpWebRequest)WebRequest.Create("http://api.xxxxx.com"); request.Method = "POST"; string postData = "login=xxx&password=xxx&postblog=Mon message. Problème avec les accents ô ê etc.."; 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(); HttpWebResponse response = (HttpWebResponse)request.GetResponse(); Console.WriteLine(((HttpWebResponse)response).StatusDescription); dataStream = response.GetResponseStream(); StreamReader reader = new StreamReader(dataStream); string responseFromServer = reader.ReadToEnd(); Console.WriteLine(responseFromServer); reader.Close(); dataStream.Close(); response.Close();
Partager