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

Signaler
Messages postés
5
Date d'inscription
jeudi 14 mai 2009
Statut
Membre
Dernière intervention
15 juin 2009
-
Messages postés
5
Date d'inscription
jeudi 14 mai 2009
Statut
Membre
Dernière intervention
15 juin 2009
-
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

3 réponses

Messages postés
3708
Date d'inscription
lundi 5 juillet 2004
Statut
Membre
Dernière intervention
27 avril 2012
27
Salut,

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

Cordialement,

Kohntark -
Messages postés
5
Date d'inscription
jeudi 14 mai 2009
Statut
Membre
Dernière intervention
15 juin 2009

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.
Messages postés
5
Date d'inscription
jeudi 14 mai 2009
Statut
Membre
Dernière intervention
15 juin 2009

... 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.