IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Bibliothèques et frameworks PHP Discussion :

[Web Service][SOAP] Service Web/XML, Problème d'entête HTTP SOAPAction


Sujet :

Bibliothèques et frameworks PHP

  1. #1
    hxt
    hxt est déconnecté
    Membre à l'essai
    Profil pro
    Inscrit en
    Mars 2005
    Messages
    23
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2005
    Messages : 23
    Points : 15
    Points
    15
    Par défaut [Web Service][SOAP] Service Web/XML, Problème d'entête HTTP SOAPAction
    Bonjour,

    Je vous explique donc mon problème.
    J'essaie d'utiliser un service web, celui-ci doit me renvoyer le profil d'un client en fonction d'un identifiant unique.

    J'ai donc fait mon client en utilisant NuSOAP.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    require("nusoap.php");
     
    $ins = new soapclient("http://XXXXXXX/service.asmx?WDSL");
     
    $param = array('aClientCardID'=>'1111111');
    $xml_rec = $ins->call('wsGetClientProfile',$param);
    //---------
    //---------
    print_r($xml_rec);
    Et j'obtiens comme message d'erreur :
    Array ( [faultcode] => soap:Client [faultstring] => Le serveur n'a pas reconnu la valeur de l'en-tête HTTP SOAPAction : . [detail] => )
    C'est là où je bloque...il faut donc que je "définisse" un en-tête HTTP SOAPAction, je suppose ? Comment fait-on cela et comment l'envoyer au serveur ?

    Si vous avez une idée..

    Je vous remercie d'avance,

  2. #2
    Membre confirmé Avatar de stunti
    Inscrit en
    Mai 2006
    Messages
    520
    Détails du profil
    Informations personnelles :
    Âge : 45

    Informations forums :
    Inscription : Mai 2006
    Messages : 520
    Points : 594
    Points
    594
    Par défaut
    regarde la version de SOAP supportee par le serveur car SOAPAction est apparu dans la version 1.1 me semble t'il de SOAP.
    If it's not broken, don't fix it.
    BiliBa Built on top of Zend Framework

  3. #3
    hxt
    hxt est déconnecté
    Membre à l'essai
    Profil pro
    Inscrit en
    Mars 2005
    Messages
    23
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2005
    Messages : 23
    Points : 15
    Points
    15
    Par défaut
    Merci pour ta réponse.

    Je viens de regarder, le serveur supporte la version 1.2 de SOAP.

    Pour info, je suis sous PHP 5 (au cas où ca peut vous guider).

  4. #4
    Membre confirmé Avatar de stunti
    Inscrit en
    Mai 2006
    Messages
    520
    Détails du profil
    Informations personnelles :
    Âge : 45

    Informations forums :
    Inscription : Mai 2006
    Messages : 520
    Points : 594
    Points
    594
    Par défaut
    Pourquoi utiliser NuSOAP et pas l'extension de PHP5 ?

    http://www.zend.com/php5/articles/ph...iew=1#Heading3
    If it's not broken, don't fix it.
    BiliBa Built on top of Zend Framework

  5. #5
    hxt
    hxt est déconnecté
    Membre à l'essai
    Profil pro
    Inscrit en
    Mars 2005
    Messages
    23
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2005
    Messages : 23
    Points : 15
    Points
    15
    Par défaut
    J'essaye maintenant d'utiliser l'extension de PHP 5.

    Mon code est le suivant :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    try {
        // Nouvelle instance de la classe soapClient
        $client = new SoapClient(XXXXXX/service.asmx?WSDL',array('trace' => 1,'soap_version'  => SOAP_1_2,'encoding' => 'UTF-8'));
        // 
        $param = array('aClientCardID'=>'I5553882');
        $O =  $client -> __soapCall('wsGetClientProfile',$param);
        // Affichage du résultat
        print_r ($O);
    } catch (SoapFault $fault) {
        echo $fault;
    }
    J'obtiens le message d'erreur suivant :

    SoapFault exception: [soap:Receiver] Le serveur n'a pas pu traiter la demande. ---> La référence d'objet n'est pas définie à une instance d'un objet. in C:\wamp\www\wsAddDejaVu3.php:17 Stack trace: #0 C:\wamp\www\wsAddDejaVu3.php(17): SoapClient->__soapCall('wsGetClientProf...', Array) #1 {main}

    Pfff, qu'est ce que cela signifie ? Comment résoudre ce problème ?

    Merci d'avance,

  6. #6
    Membre à l'essai
    Profil pro
    Inscrit en
    Juillet 2005
    Messages
    26
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France, Isère (Rhône Alpes)

    Informations forums :
    Inscription : Juillet 2005
    Messages : 26
    Points : 24
    Points
    24
    Par défaut
    Up !

    Bonjour,

    Je fais remonter ce topic, car j'ai le même problème que hxt. J'essaie d'appeler un webservice en utilisant nusoap, et j'obtiens le message d'erreur
    [faultcode] => soap:Client [faultstring] => Le serveur n'a pas reconnu la valeur de l'en-tête HTTP SOAPAction : . [detail] =>
    Mon code est le suivant :

    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
    function callWs($urlWs, $nomMethode, $arrayParametres)
    {	
    	$client = new soapclient($urlWs);
    	$err = $client->getError();
    	if ($err) {echo 'err1 ' . $err ; }
     
    	$res = $client->call($nomMethode, $arrayParametres);
     
    	if ($client->fault) {echo 'res1 ' . $res ; }
    	else 
    	{
    		$err = $client->getError();
    		if ($err){ echo 'err2' . $err ; }
    		else {echo 'res2 ' . $res ;}
    	}	
    }
    Le message d'erreur apparait à la ligne contenant "res1".

    J'utilise php 4.3.10.

    Peut-être quelqu'un connaît-t-il une solution à ce problème ?

    Merci d'avance pour vos réponses ...

  7. #7
    Membre à l'essai
    Profil pro
    Inscrit en
    Juillet 2005
    Messages
    26
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France, Isère (Rhône Alpes)

    Informations forums :
    Inscription : Juillet 2005
    Messages : 26
    Points : 24
    Points
    24
    Par défaut
    Bon, au cas où quelqu'un aurait le même problème, voilà la solution : il faut rajouter le paramètre soapAction quand on appelle la méthode call :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $client->call($nomMethode, $arrayParametres,'','http://tempuri.org/'.$nomMethode);

  8. #8
    Candidat au Club
    Profil pro
    Inscrit en
    Octobre 2008
    Messages
    5
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2008
    Messages : 5
    Points : 4
    Points
    4
    Par défaut
    Bonjour,
    quel est le parametre : " http://tempuri.org/ " ??? s'agit-il du namespace?? car en ajoutant ta ligne une erreur se produit :

    Array ( [faultcode] => soapenv:Client [faultstring] => Exception occurred while trying to invoke service method getUserID [detail] => Array ( [Exception] => org.apache.axis2.AxisFault: Exception occurred while trying to invoke service method getUserID at org.apache.axis2.rpc.receivers.RPCMessageReceiver.invokeBusinessLogic(RPCMessageReceiver.java:157) at org.apache.axis2.receivers.AbstractInOutSyncMessageReceiver.receive(AbstractInOutSyncMessageReceiver.java:39) at org.apache.axis2.engine.AxisEngine.receive(AxisEngine.java:144) at org.apache.axis2.transport.http.HTTPTransportUtils.processHTTPPostRequest(HTTPTransportUtils.java:279) at org.apache.axis2.transport.http.HTTPWorker.service(HTTPWorker.java:216) at org.apache.axis2.transport.http.server.AxisHttpService.doService(AxisHttpService.java:275) at org.apache.axis2.transport.http.server.AxisHttpService.handleRequest(AxisHttpService.java:184) at org.apache.axis2.transport.http.server.HttpServiceProcessor.run(HttpServiceProcessor.java:74) at edu.emory.mathcs.backport.java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:665) at edu.emory.mathcs.backport.java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:690) at java.lang.Thread.run(Thread.java:619) Caused by: java.lang.NullPointerException at org.apache.axis2.rpc.receivers.RPCMessageReceiver.invokeBusinessLogic(RPCMessageReceiver.java:95) ... 10 more ) ) Check for a fault

    merci

Discussions similaires

  1. Où se trouve le problème en utilisant http get+xml comme web service?
    Par kisitomomotene dans le forum XML/XSL et SOAP
    Réponses: 1
    Dernier message: 17/01/2011, 19h44
  2. création de web services sous eclipse problème "binding"
    Par hammag dans le forum Services Web
    Réponses: 4
    Dernier message: 23/06/2008, 11h06
  3. Créer un service web XML appelant du C++
    Par Mouti dans le forum Général Conception Web
    Réponses: 2
    Dernier message: 28/11/2007, 12h23
  4. Réponses: 16
    Dernier message: 19/02/2007, 16h25
  5. [XML] Web Service/PHP/XML
    Par jokaris dans le forum XML/XSL et SOAP
    Réponses: 1
    Dernier message: 04/08/2006, 13h01

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo