Consommer un WS en PHP
                                    
                        fred33                    
                                    -
                                     
a.laumiere Messages postés 21 Statut Membre -
        a.laumiere Messages postés 21 Statut Membre -
        Bonjour, 
J'ai écrit une page en PHP pour consommer un Web Service .L 'URL du Web Service est bien accessible depuis le poste sur lequel j ' effectue mon développement , de plus depuis le logiciel SoapUI qui permet de tester un Web service ça fonctionne . Pourtant lorsque je teste la page ci-dessous depuis Apache , j 'ai l 'erreur suivante :
wsdl error: Getting http://test-ws.fr/services/AddressWS?wsdl - HTTP ERROR: Couldn't open socket connection to server http://test-ws.fr/services/AddressWS?wsdl, Error (10060): Une tentative de connexion a échoué car le parti connecté n'a pas répondu convenablement au-delà d'une certaine durée ou une connexion établie a échoué car l'hôte de connexion n'a pas répondu.
Après quelques recherches sur le net , il s 'agirait du proxy , j'ai des doutes car l'URL de mon Web Service est acceptée par mon proxy . Est-ce qu'il s'agit d'un problème de port , ...
Merci de votre aide .
Page PHP pour consommer un Web Service
<?
require_once('nusoap/lib/nusoap.php');
$proxyhost = isset($_POST['proxyhost']) ? $_POST['proxyhost'] : '';
$proxyport = isset($_POST['proxyport']) ? $_POST['proxyport'] : '';
$proxyusername = isset($_POST['proxyusername']) ? $_POST['proxyusername'] : '';
$proxypassword = isset($_POST['proxypassword']) ? $_POST['proxypassword'] : '';
$clientService = new nusoap_client('http://test-ws.fr/services/AddressWS?wsdl','wsdl',$proxyhost,$proxyport,$proxyusername,$proxypassword);
/*$clientService = new nusoap_client($wsdl, 'wsdl');*/
$err = $clientService->getError();
if ($err) {
echo '<h2>Constructor error</h2><pre>' . $err . '</pre>';
}
$params = Array(
'arg0' => 'test',
'arg1' => 'test',
'arg2' => Array(
'ligne1' => 'testeric',
'ligne2' => '',
'ligne3' => '',
'ligne4' => '',
'ligne5' => '',
'ligne6' => '33 BORDEAUX',
'ligne7' => ''
)
);
$result = $clientService->call('controlWoCaptcha', $params);
// Check for a fault
if ($clientService->fault) {
echo '<h2>Fault</h2><pre>';
print_r($result);
echo '</pre>';
} else {
// Check for errors
$err = $clientService->getError();
if ($err) {
echo '<h2>Error</h2><pre>' . $err . '</pre>';
}
else {
// Display the result
echo '<h2>Result</h2><pre>';
print_r($result);
echo '</pre>';
}
}
echo '<h2>Request</h2><pre>' . htmlspecialchars($clientService->request, ENT_QUOTES) . '</pre>';
echo '<h2>Response</h2><pre>' . htmlspecialchars($clientService->response, ENT_QUOTES) . '</pre>';
echo '<h2>Debug</h2><pre>' . htmlspecialchars($clientService->debug_str, ENT_QUOTES) . '</pre>';
?>
                
            
                
    
    
    
        J'ai écrit une page en PHP pour consommer un Web Service .L 'URL du Web Service est bien accessible depuis le poste sur lequel j ' effectue mon développement , de plus depuis le logiciel SoapUI qui permet de tester un Web service ça fonctionne . Pourtant lorsque je teste la page ci-dessous depuis Apache , j 'ai l 'erreur suivante :
wsdl error: Getting http://test-ws.fr/services/AddressWS?wsdl - HTTP ERROR: Couldn't open socket connection to server http://test-ws.fr/services/AddressWS?wsdl, Error (10060): Une tentative de connexion a échoué car le parti connecté n'a pas répondu convenablement au-delà d'une certaine durée ou une connexion établie a échoué car l'hôte de connexion n'a pas répondu.
Après quelques recherches sur le net , il s 'agirait du proxy , j'ai des doutes car l'URL de mon Web Service est acceptée par mon proxy . Est-ce qu'il s'agit d'un problème de port , ...
Merci de votre aide .
Page PHP pour consommer un Web Service
<?
require_once('nusoap/lib/nusoap.php');
$proxyhost = isset($_POST['proxyhost']) ? $_POST['proxyhost'] : '';
$proxyport = isset($_POST['proxyport']) ? $_POST['proxyport'] : '';
$proxyusername = isset($_POST['proxyusername']) ? $_POST['proxyusername'] : '';
$proxypassword = isset($_POST['proxypassword']) ? $_POST['proxypassword'] : '';
$clientService = new nusoap_client('http://test-ws.fr/services/AddressWS?wsdl','wsdl',$proxyhost,$proxyport,$proxyusername,$proxypassword);
/*$clientService = new nusoap_client($wsdl, 'wsdl');*/
$err = $clientService->getError();
if ($err) {
echo '<h2>Constructor error</h2><pre>' . $err . '</pre>';
}
$params = Array(
'arg0' => 'test',
'arg1' => 'test',
'arg2' => Array(
'ligne1' => 'testeric',
'ligne2' => '',
'ligne3' => '',
'ligne4' => '',
'ligne5' => '',
'ligne6' => '33 BORDEAUX',
'ligne7' => ''
)
);
$result = $clientService->call('controlWoCaptcha', $params);
// Check for a fault
if ($clientService->fault) {
echo '<h2>Fault</h2><pre>';
print_r($result);
echo '</pre>';
} else {
// Check for errors
$err = $clientService->getError();
if ($err) {
echo '<h2>Error</h2><pre>' . $err . '</pre>';
}
else {
// Display the result
echo '<h2>Result</h2><pre>';
print_r($result);
echo '</pre>';
}
}
echo '<h2>Request</h2><pre>' . htmlspecialchars($clientService->request, ENT_QUOTES) . '</pre>';
echo '<h2>Response</h2><pre>' . htmlspecialchars($clientService->response, ENT_QUOTES) . '</pre>';
echo '<h2>Debug</h2><pre>' . htmlspecialchars($clientService->debug_str, ENT_QUOTES) . '</pre>';
?>
        A voir également:         
- Php ws
- Easy php - Télécharger - Divers Web & Internet
- Expert php pinterest - Télécharger - Langages
- Ws-37368-7 - Forum PS4
- Ws ftp - Télécharger - Téléchargement & Transfert
- Ce matin j ai voulu jouer sur ma console mais ca ma mis le code d'erreur (WS-37 - Forum PS4
3 réponses
                        
                    Bonjour,
Pour info il y avait un bug dans la librairie (https://sourceforge.net/p/nusoap/discussion/193578/thread/5ef4a7d8/
Vérifie que la version de NuSOAP utilisée est la plus récente.
                
                
    
                Pour info il y avait un bug dans la librairie (https://sourceforge.net/p/nusoap/discussion/193578/thread/5ef4a7d8/
Vérifie que la version de NuSOAP utilisée est la plus récente.
                        
                    Merci pour ta réponse , j 'utilise les versons suivantes :
nusoap-0.9.5
Apache/1.3.33 (Win32) PHP/4.3.11
Est ce que nusoap est compatible avec toutes les versions PHP et apache ?
    
                nusoap-0.9.5
Apache/1.3.33 (Win32) PHP/4.3.11
Est ce que nusoap est compatible avec toutes les versions PHP et apache ?
    oups, j'avais  pas vu, la version qui corrige ce bug n'est pas encore sortie (v0.9.6).
Tu peux essayer de reprendre la version du CVS qui corrige ce bug ou modifier directement la classe soap_transport_http dans la lib (cf. forum sf).
La solution n'est pas très élégante mais peut résoudre ton problème en attendant la prochaine version.
    Tu peux essayer de reprendre la version du CVS qui corrige ce bug ou modifier directement la classe soap_transport_http dans la lib (cf. forum sf).
La solution n'est pas très élégante mais peut résoudre ton problème en attendant la prochaine version.
                        
                    Bonjour Merci pour ta réponse alors j 'ai essayé de corriger cette librairie , comme préconisé dans le forum .
Code d 'origine :
// open socket
if($connection_timeout > 0){
$this->fp = @fsockopen( $host, $this->port, $this->errno, $this->error_str, $connection_timeout); }
else
{ $this->fp = @fsockopen( $host, $this->port, $this->errno, $this->error_str); }
code modifié :
// open socket
if($connection_timeout > 0){
$this->fp = @fsockopen( $host, $port, $this->errno, $this->error_str, $connection_timeout); }
else
{ $this->fp = @fsockopen( $host, $port, $this->errno, $this->error_str); }
Toujours le même problème , je ne sais pas si je vais pouvoir y accéder à mon WS via PHP
    
                Code d 'origine :
// open socket
if($connection_timeout > 0){
$this->fp = @fsockopen( $host, $this->port, $this->errno, $this->error_str, $connection_timeout); }
else
{ $this->fp = @fsockopen( $host, $this->port, $this->errno, $this->error_str); }
code modifié :
// open socket
if($connection_timeout > 0){
$this->fp = @fsockopen( $host, $port, $this->errno, $this->error_str, $connection_timeout); }
else
{ $this->fp = @fsockopen( $host, $port, $this->errno, $this->error_str); }
Toujours le même problème , je ne sais pas si je vais pouvoir y accéder à mon WS via PHP
