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

Langage PHP Discussion :

[Système] PHP et web services


Sujet :

Langage PHP

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre habitué
    Inscrit en
    Mai 2007
    Messages
    14
    Détails du profil
    Informations forums :
    Inscription : Mai 2007
    Messages : 14
    Par défaut [Système] PHP et web services
    Bonjour,

    Dans le cadre d'un développement, je dois envoyer des requêtes XML à un service web.Je souhaite gérer l'envoi et la réception en php. Par ailleurs je découvre les services web.
    Pour effectuer mes premiers tests j'ai tenté de communiquer avec le service web présenté dans le tuto de w3schools (http://www.w3schools.com/webservices/ws_use.asp)

    J'ai parcouru plusieurs forums et ai essayé de procéder avec des sockets pour envoyer les requêtes au service web concerné mais je reçois au mieux un message "bad request" (la plupart du temps le chargement de ma page continue indéfiniement malgré une gestion avec timeout).
    Quelqu'un aurait il déjà réalisé ce genre de développement, existe-t-il une mise en oeuvre simple avec php sans avoir à installer des librairies sur le serveur(je suis sur un hébergement free)?

  2. #2
    Membre expérimenté

    Profil pro
    Inscrit en
    Juin 2002
    Messages
    6 152
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2002
    Messages : 6 152
    Par défaut
    Citation Envoyé par spooky39
    J'ai parcouru plusieurs forums et ai essayé de procéder avec des sockets pour envoyer les requêtes au service web concerné mais je reçois au mieux un message "bad request" (la plupart du temps le chargement de ma page continue indéfiniement malgré une gestion avec timeout).
    Si vous nous donnez le code en question, nous pourrions y jeter un oeil

    Citation Envoyé par spooky39
    existe-t-il une mise en oeuvre simple avec php sans avoir à installer des librairies sur le serveur(je suis sur un hébergement free)?
    Avec l'extension cURL disponible chez Free pour ses deux versions de PHP (4 comme 5) ?

  3. #3
    Membre habitué
    Inscrit en
    Mai 2007
    Messages
    14
    Détails du profil
    Informations forums :
    Inscription : Mai 2007
    Messages : 14
    Par défaut mon code en php
    Bonjour

    Voici le code que j'ai utilisé


    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
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    	$rpc_page='/webservices/tempconvert.asmx';
    	$rpc_host='www.w3schools.com';
    	$rcp_port='80';
     
     
    	$timeout=8;					
     
    	$xml_rpc  = "\r\nFahrenheit=84";
     
    	$xml_rpc_length = strlen($xml_rpc);
     
    	$http_request  = 'POST '.$rpc_page.' HTTP/1.1'."\r\n";
    	$http_request .= 'Host: '.$rpc_host."\r\n";
    	$http_request .= 'Content-Type: application/x-www-form-urlencoded'."\r\n";
    	$http_request .= 'Content-length: '.$xml_rpc_length."\r\n";
    	$http_request .= $xml_rpc."\r\n";
     
    	echo '<p>Requête XML-RPC :</p><pre>'.htmlentities($http_request).'</pre>';
     
    	$theSock = fsockopen($rpc_host, $rcp_port, $errno, $errstr,$timeout);
     
    	if($theSock)
    	{	
    		fwrite($theSock,$http_request);
     
    		stream_set_blocking($theSock,1);
    		stream_set_timeout($theSock,10);
    		$info = stream_get_meta_data($theSock); 
     
     
     
    		if ($info['timed_out']) 
    		{
            	echo "Connection Timed Out!";
            } 
    		else 
    		{
                while(!feof($theSock)&&!$info['timed_out'])
    			{
    			$buf .= fgets($theSock,128);
    			}
    			fclose($theSock); 
     
    			echo '<p>Réponse XML-RPC :</p>'."\r\n\r\n".'<pre>'.htmlentities($buf).'</pre>';
            } 
     
    	}
    	else
    	{
    	echo "l ouverture a échoué";
    	}
    malgré la présence du timeout la page se charge indéfiniemùent au lieu de me retourner un message d'erreur

    et par malchance http://www.w3schools.com/webservices/ws_example.asp n'est pas dispo ce matin

  4. #4
    Membre chevronné Avatar de Asmodean
    Profil pro
    Inscrit en
    Février 2006
    Messages
    311
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France

    Informations forums :
    Inscription : Février 2006
    Messages : 311
    Par défaut
    Bonjour,

    Pour gérer les webservices en PHP il y a la librairie SOAP intégré dans PHP5 (ou la librairie NuSOAP pour PHP4, ou pour PHP5 si l'extension SOAP n'est pas activé). Donc il faudrait que tu fasse un phpinfo pour savoir si SOAP est activé dans ton installation de php.

    Et ensuite pour l'extension SOAP tout est bien expliqué ici : http://de3.php.net/manual/fr/ref.soap.php

  5. #5
    Membre habitué
    Inscrit en
    Mai 2007
    Messages
    14
    Détails du profil
    Informations forums :
    Inscription : Mai 2007
    Messages : 14
    Par défaut config serveur php
    Merci pour la réponse

    Sur mon serveur php (free donc je n'ai pas la main dessus), cURL est activé mais pas SOAP.

  6. #6
    Membre chevronné Avatar de Asmodean
    Profil pro
    Inscrit en
    Février 2006
    Messages
    311
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France

    Informations forums :
    Inscription : Février 2006
    Messages : 311
    Par défaut
    Dans ce cas tu as deux possibilité :

    Utiliser cURL, mais là je ne sais pas comment ça marche

    Utiliser la librairie nuSOAP telechargable sur le net (ce sont des fichiers PHP en fait) qui marche presque comme la librairie SOAP.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [MySQL] problème php et web service
    Par doudi10 dans le forum PHP & Base de données
    Réponses: 0
    Dernier message: 29/10/2010, 18h22
  2. [Web Service][SOAP] client php et web service windev
    Par pev15 dans le forum Bibliothèques et frameworks
    Réponses: 7
    Dernier message: 28/05/2010, 13h48
  3. [Web Service] PHP & SOAP - web service
    Par Gregory.M dans le forum Bibliothèques et frameworks
    Réponses: 1
    Dernier message: 27/12/2008, 13h07

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