Verifier l'encodage de la requete d'un WebService [Résolu]

Messages postés
5
Date d'inscription
jeudi 14 mai 2009
Dernière intervention
15 juin 2009
- - Dernière réponse : japette
Messages postés
5
Date d'inscription
jeudi 14 mai 2009
Dernière intervention
15 juin 2009
- 15 juin 2009 à 16:29
Bonjour,

Je bute depuis pas mal de temps sur un problème qui m'est assez difficile de résoudre. C'est pour cela que j'ai besoin de vous!

J'écris un webservice qui reçoit des informations afin de les insérer en base. Celles-ci doivent absolument être encodées en UTF8. Je dois, dans le service, vérifier que c'est bien le cas. J'ai rien trouvé de mieux que de faire un appel à la fonction :

mb_detect_encoding($string. 'a' , "UTF-8",true)

Celle ci retourne "UTF-8" si la chaine n'est pas accentuée ou si elle est accentuée ET encodée en UTF-8.

J'ai fait le test en étudiant le contenu de certains fichiers encodés sous différents formats (grâce à Notepad++) et cela marche.
En revanche le même test avec des informations venant de mon service ne marche pas. Je pense que c'est la trame qui est encodée en UTF8 et que je n'y peux rien, car par exemple quand j'envoie un accent encodé en ANSI il est mal reçu de l'autre côté (caractère d'erreur) mais détecté comme étant en UTF8.

Avez vous une idée ?

Merci d'avance
Afficher la suite 

Votre réponse

3 réponses

Meilleure réponse
Messages postés
3708
Date d'inscription
lundi 5 juillet 2004
Dernière intervention
27 avril 2012
3
Merci
Salut,

Par quel biais ton service reçoit il les données ? (sockets, cURL, ...)

Cordialement,

Kohntark -

Merci kohntark 3

Quelques mots de remerciements seront grandement appréciés. Ajouter un commentaire

Codes Sources a aidé 97 internautes ce mois-ci

Commenter la réponse de kohntark
Messages postés
5
Date d'inscription
jeudi 14 mai 2009
Dernière intervention
15 juin 2009
0
Merci
J'utilise la classe SoapClient de la façon qui suit :

    $client = new SoapClient("http://localhost:8080/web/monService.wsdl",
    array("trace" => 1, "exceptions" => 0));
    try
    {
        $ns = 'http://localhost:8080/web/';
        $AuthHeader = new ClientAuthData($username,$password);
        $header =  new SoapHeader($ns,"AuthHeaderElement",  $AuthHeader,false);
        $client->__setSoapHeaders(array($header));   
    }

De plus je suis sur le serveur Apache fourni avec EasyPHP 2.0b1.
Commenter la réponse de japette
Messages postés
5
Date d'inscription
jeudi 14 mai 2009
Dernière intervention
15 juin 2009
0
Merci
... et j'appelle tout bêtement la méthode de la façon suivante :

$tmp=$client->Envoyer($soap_object);
  if($tmp instanceof SoapFault){
      print('
Warning - Exception : '.$tmp->getMessage());
  } else {
      print('
Résultat de la requete : '.$tmp.'.');
  }

Je dois préciser que je suis sous le framework symfony côté service.
Commenter la réponse de japette

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.