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

japette 5 Messages postés jeudi 14 mai 2009Date d'inscription 15 juin 2009 Dernière intervention - 15 juin 2009 à 14:53 - Dernière réponse : japette 5 Messages postés jeudi 14 mai 2009Date d'inscription 15 juin 2009 Dernière intervention
- 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
kohntark 3708 Messages postés lundi 5 juillet 2004Date d'inscription 27 avril 2012 Dernière intervention - 15 juin 2009 à 16:08
3
Merci
Salut,

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

Cordialement,

Kohntark -

Merci kohntark 3

Avec quelques mots c'est encore mieux Ajouter un commentaire

Codes Sources a aidé 93 internautes ce mois-ci

Commenter la réponse de kohntark
japette 5 Messages postés jeudi 14 mai 2009Date d'inscription 15 juin 2009 Dernière intervention - 15 juin 2009 à 16:14
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
japette 5 Messages postés jeudi 14 mai 2009Date d'inscription 15 juin 2009 Dernière intervention - 15 juin 2009 à 16:29
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.