Bonjour tous le monde,
j'ai une question : est-ce que c'est possible d'appeler un code CGI depuis une page PHP avec les web services ?
merci
Version imprimable
Bonjour tous le monde,
j'ai une question : est-ce que c'est possible d'appeler un code CGI depuis une page PHP avec les web services ?
merci
si ton cgi propose un web service oui
en faisant du SOAP, du REST n'importe quel type web service
peux-tu me donner un exemple complet d'un serveur CGI et un client PHP utilisant les web services ?
merci bcp.
quelle est l'appli CGI ?
Voici un exemple d'un code cgi :
Code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21 #!/usr/bin/perl #print ("Content-type: text/html\n\n"); use SOAP::Transport::HTTP; SOAP::Transport::HTTP::CGI -> dispatch_to('Demo') -> handle; package Demo; sub hi { return "hello, world"; } sub GoodBye { my ($name) = @_; return 'Goodbye, ' . $name . "\n"; } 1;
si c'est du SOAP utilise la classe SOAP du PHP
je l'ai essayé mais ça bloque : pas de réponse ! (avec 2 maniérés )
Pouvez-vous l'essayer et me donner le code ?
on ne connais pas ton API, montre ton code
Voici le code php client :
Code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24 <HTML> <BODY> <?php require_once('nusoap/lib/nusoap.php'); $client = new nusoap_client('http://localhost/cgi-bin/hibye.cgi'); $param = array('$name'=>'aaaa'); if ($client->fault) { echo '<p><b>Fault: '; echo($result); echo '</b></p>'; } else { // Check for errors $err = $client->getError(); if ($err) { // Display the error echo '<p><b>Error: ' . $err . '</b></p>'; } else { // Display the result echo($client->call('GoodBye', $param )); } } ?> </BODY> </HTML>
utilise direct l'extension SOAP du PHP
ça bloque !
Code:
1
2
3
4
5
6
7
8
9
10
11 <?php $wsdl = 'http://localhost/cgi-bin/hibye.cgi'; $options = array('cache_wsdl' => WSDL_CACHE_NONE); // pour effacer le cache try { $soapclt = new SoapClient($wsdl, $options); $res = $soapclt->GoodBye("aaaa"); echo $res; } catch (SoapFault $fault) { trigger_error("ERREUR WS-CLIENT A.PHP (faultcode: {$fault->faultcode}, faultstring: {$fault->faultstring})", E_USER_ERROR); } ?>
fais un __getFunctions
le code bloque tjs à l'instruction
Est ce que le code marche chez-toi?Code:$soapclt = new SoapClient($wsdl, $options);
j'en sais rien, j'ai pas accès a ton CGI ...
tu peux le copier en localhost ! mais as-tu une exemple complet (serveur cgi, client php) ?
ah c'est que ça
ton fichier c'est pas le wdsl, c'est l'adresse de ton serveur
Code:
1
2
3
4
5
6 $location= 'http://localhost/cgi-bin/hibye.cgi'; $options = array( 'location' => $location, 'uri' => '' ); $soapclt = new SoapClient(null, $options);
ça se débloque unpeu;
$soapclt = new SoapClient(null, $options); marche très bien mais lorsque je demande l'affichage des fonctions avec $soapclt->__getFunctions() j'ai NULL
une idée ?
je peux pas devenier les choses à toi de regarder les erreurs en attrapant les exceptions