Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
1159 connectés 

  FORUM HardWare.fr
  Programmation
  C#/.NET managed

  WebService et content-type

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

WebService et content-type

n°1229824
Dnx
Posté le 24-10-2005 à 17:17:32  profilanswer
 

bonjour,
 
j'ai développé un webservice avec lequel il reçoit des messages en POST HTTP mais voila, par défaut, le content-type est reglé sur :
 
application/x-www-form-urlencoded
 
or notre client envoit des chaines au format XML et donc dès l'arrivée du message, certains caractères comme le "é", "à" sont supprimés!
 
la solution serait (peut-être) de régler le content-type du webservice sur : "text/xml"
 
mais je ne sais pas comment faire, please help!
 
merci d'avance

mood
Publicité
Posté le 24-10-2005 à 17:17:32  profilanswer
 

n°1229860
Dnx
Posté le 24-10-2005 à 18:10:34  profilanswer
 

voila, j'ai fais quelques tests :
 
lorsque j'envois cette chaine : "Paratel test: /é/è/à/ç/ù/"
 
voici à quoi ressemble la chaine lors de l'envoi :
 
3EParatel+test%3A+%2F%E9%2F%E8%2F%E0%2F%E7%2F%F9%2F
 
j'ai essayé les URLDECODE et HTMLDECODE mais apparemment, ce n'est pas ca...
 
merci d'avance

n°1229890
_Mose_
Lonesome coder
Posté le 24-10-2005 à 19:21:07  profilanswer
 

Comprend pas bien...
- Tu créé ton web service avec VS.Net ?
- Tu utilises ASP.Net ?
Si oui, la partie concernant l'encodage des requêtes/réponse se trouve dans le web.Config, section 'globalization'.
Ca ressemble à ça par défaut :
   <globalization requestEncoding="utf-8" responseEncoding="utf-8" />
Mais je pense pas que ça résolve ton pb...
- A ma connaissance, le content-type ne dépend pas du web service mais du serveur web : tu utilises IIS ?
- Tu pourrais décrire un peu plus ton archi stp ? C'est quoi ton client, une appli ASP.Net ?
- La chaîne que tu nous montre, c'est à quel bout de ton système que tu l'as prise ? L'envoi de quoi vers quoi ?

n°1230005
Dnx
Posté le 24-10-2005 à 21:44:38  profilanswer
 

tout d'abord merci pour ton implication.
 
en fait, j'ai crée un webservice en asp.net (VB.net en code behind pour être précis) avec visual .net 2003 et c'est un webservice on ne peut plus banal (1 méthode).
en pratique le webservice doit s'attendre à recevoir des messages en POST HTTP (peu importe la source, que ce soit en provenance du web ou d'une application stand alone, du moment que post http arrive, il traite)
techniquement, j'ai autorisé dans le web.config la communication en Post HTTP
 
donc pour utiliser le webservice, on peut soit l'utiliser manuellement (avec le bouton INVOKE) soit de manière automatique (c'est la le but)
et pour faire de l'automation, il faut faire du POST HTTP ou du GET HTTP.
 
or notre client ne sait faire que du POST HTTP donc ca ressemble a ca :  
 
POST /WSParatel/Service1.asmx/PostData HTTP/1.1
Host: localhost
Content-Type: application/x-www-form-urlencoded
Content-Length: length
 
XML=string
 
réponse si tout OK :  
 
HTTP/1.1 200 OK
 
 
comme tu peux le constater il s'attend a un message de type "application/x-www-form-urlencoded"
mais avec ce format, les "é", "à" et bien d'autres caractères sont remplacés par des "?" ou supprimés carrément :/
 
et pour moi la solutio serait de dire au webservice qu'il doit s'attendre à non plus des messages dont le content-type est : "application/x-www-form-urlencoded" mais du "text/xml"
 
ou bien comme tu dis, ca se pourrait que ca provienne du serveur IIS... mais la je ne m'y connais pas trop.
 
et pour ce qui est du globalization, que me conseillerais tu de faire? car utf-8 n'est pas trop parlant, et puis je ne sais pas quoi faire avec...
 
une piste aussi, c'est que MSDN précise que lorsqu'on fait du POST HTTP, il y a un URLENCODE qui se passe... mais j'ai essayé dès la réception du message xml de faire un system.web.webutility.urldecode et un htmldecode mais rien n'y fait... toujours ce bug.
 
merci d'avance.

n°1230342
_Mose_
Lonesome coder
Posté le 25-10-2005 à 12:26:51  profilanswer
 

 Bon... j'ai développé du Web service, mais je suis toujours resté loin des questions de protocoles, très haut niveau, donc je suis pas sûr de pouvoir t'aider.
* Après renseignement, il est normal que ton content-type soit application/x-www-form-urlencoded, c'est parce que tu utilises du POST. Ca ne peut pas se changer, c'est comme ça.
* A ce que j'ai lu, la chaîne est effectivement UrlEncodée.
* Ta chaîne résultante ressemble furieusement à une chaîne UrlEncodée. J'ai essayer de la décoder et le résultat n'est pas terrible.
* J'ai aussi essayé d'UrlEncoder la chaîne de départ, et je tombe sur Paratel+test%3a+%2f%c3%a9%2f%c3%a8%2f%c3%a0%2f%c3%a7%2f%c3%b9%2f   Donc on n'est pas loin....
 
Ce qui pourrait expliquer la différence au niveau de l'encodage c'est le jeu de caractère utilisé.
- Regarde si ton client envoie des chaînes au format UTF-8.
- Quel jeu de caractère est utilisé par ton client dans ses requêtes ?  c'est bien charset=ISO-8859-1 ?
Si c'est pas ça, ça expliquerait pourquoi les caractère accentués ne passent pas : la norme ISO-8859-1 défini les caractères latins.

n°1230391
Dnx
Posté le 25-10-2005 à 13:43:21  profilanswer
 

exact, j'ai "simulé" un envoi en post http avec un System.Web.HttpUtility.UrlEncode(chaine)
et ca arrive au webservice parfaitement!!! même le "&" n'a pas été traité comme un paramètre!
 
donc la solution serait que notre client "urlencode" son message... seulement il ne veut pas...
 
mais ta piste sur le charset=ISO-8859-1 m'interesse beaucoup car notre client en effet envoit sous cette norme...

n°1230460
_Mose_
Lonesome coder
Posté le 25-10-2005 à 14:17:15  profilanswer
 

Quand tu simules le client avec une chaîne UrlEncodée par toi, ça marche bien ?
Bon... bein visiblement le problème vient de l'appli cliente. Pour le prouver, il te suffirait de créer un site web très simple qui utilise ton web service.
 
Ton appli cliente c'est de l'ASP.Net ? Si oui : j'imagine que t'as essayé de faire un update de la web référence ?
Il fonctionne bien en UTF-8 ton client ?  L'appli cliente, elle doit avoir un Web.Config. Si tu peux regarder dedans...
 
Si ton appli cliente utilise le charset ISO-8859-1, c'est bon. C'est le jeu de caractère latins, ça veut dire qu'elle comprend les caractères accentués :)

n°1230463
Dnx
Posté le 25-10-2005 à 14:17:35  profilanswer
 

voilaaaaaaaaaaaa
tu avais raison, c'était bien le format iso le probleme!!!
maintenant ca fonctionne super!!
grand merci!!!

n°1230618
_Mose_
Lonesome coder
Posté le 25-10-2005 à 16:16:38  profilanswer
 

Juste pour info, tu as modifié quoi sur quoi pour que ça fonctionne ?
côté client ou service ?

n°1230664
Dnx
Posté le 25-10-2005 à 16:37:55  profilanswer
 

côté service dans globalization.
 
le client, je n'ai pas accès, tout ce que je sais, c'est qu'il m'envoit en iso

mood
Publicité
Posté le 25-10-2005 à 16:37:55  profilanswer
 

n°1732904
frenchy371
Posté le 16-05-2008 à 20:15:15  profilanswer
 

Bonjour  
 
j'ai un peu le même pb  
pouvez vous m'expliquer quel est la solution à ce problème  avec globalization
 
Merci


Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  C#/.NET managed

  WebService et content-type

 

Sujets relatifs
Input typeAffecter une icone à un type de fichier en batch
[ACCESS]remettre à zéro un champ de type NuméroAutotype énuméré
[VBScript] Recordset Access et champ de type MémoS'il Vous plait une je veux une explication sur le type HDC sur Visu
[EXCEL] Format de cellule de type n° hiérarchiqueJ'aimerais crée un mot de passe (mode console.) en C de type:*********
[Pascal] limité le type de la variable[cms]Content management server
Plus de sujets relatifs à : WebService et content-type


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR