Je cherche à envoyer une requête XML (en HTTP, comme valeur d'une propriété que j'ai appelée "request", en méthode POST) à un serveur JAVA, requête qui a la particularité de contenir une balise <data> contenant un fichier ZIP. Lorsque je le fais à partir de Java, cela fonctionne.
La même requête, envoyée cette fois par un programme en C#, donne à la réception (côté serveur Java) une requête légèrement différent et en tout cas le fichier n'arrive à pas être dézippé.
La différence visible (en debug, à la réception de la requête côté Java) est que les + sont remplacés par un espace.
Alors que les + sont bien présents quand la requête est envoyée par un programme de test en Java.
Je pense à un problème lié au ContentType mais a priori seul "application/x-www-form-urlencoded" semble la bonne manière.
Voici la façon dont j'envoie la requête, y voyez-vous un souci ?
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 HttpWebRequest objHttpWebRequest; HttpWebResponse objHttpWebResponse = null; Stream objResponseStream = null; Stream objRequestStream = null; XmlTextReader objXMLReader; objHttpWebRequest = (HttpWebRequest)WebRequest.Create(v_strURL); try { byte[] bytes = Encoding.ASCII.GetBytes("request=" + v_objXMLDoc.OuterXml); objHttpWebRequest.Method = "POST"; objHttpWebRequest.ContentType = "application/x-www-form-urlencoded"; objHttpWebRequest.ContentLength = bytes.Length; objRequestStream = objHttpWebRequest.GetRequestStream(); objRequestStream.Write(bytes, 0, bytes.Length); objRequestStream.Close(); objHttpWebResponse = (HttpWebResponse)objHttpWebRequest.GetResponse();
Sachant que ma requête (dans v_objXMLDoc.OuterXml) ressemble à quelque chose comme :
Je vous passe l'encodage du fichier ZIP en StringBase64 car puisque la requête est la même qu'en Java (mon programme qui marche) je ne pense pas que le problème vienne à la base du contenu de la balise <data> mais plutôt de la façon d'envoyer qui ferait perdre des données, en tout cas les + !
Code : Sélectionner tout - Visualiser dans une fenêtre à part <?xml version="1.0" encoding="ISO-8859-1"?><action prop="a"><data>UEsDBBQAAgAIAI+GcDzHDsOyVQ0AAFxdAAAIAAAAY29uZi5pbmmVXF1v20YWfQ/g/xD0cVG0vMPRV7FagJHomK0sqfqwGxiFwNpMzEYWVYoKmv1Hed+3ffQf26EkSuTMnXtngSKleY7mHF3OHA7JER+Gefolyad59jFdJ79fvZkXcV4s0pek73s/gvgRur3eW6/3k+ep/67ehJsnHYRuBZZtpZtPg2xX9OF7r3P15j7LP1d7Ot+3FCXdFfHmMVlu0qL/+eXqzThWrY2z/Zck3r/98vrtOX3cr5O3/1CfTZ+Su0T9vU76qvFRtvlU+/MmST89F+XW/Xn</data></action>
Toute piste ou idée est la bienvenue, n'ayant jamais touché à ce genre de choses auparavant !
Merci !
Partager