php client de savon, d'erreur, de mauvaise wsdl? “Uncaught exception de type soapfault: [HTTP] impossible de se connecter à l'hôte”

Je suis la plupart du temps nouveau pour le SAVON, j'ai donc fait un petit script de test pour se connecter à mon serveur du client. Ils ont un GetMessage de commande, qui ne nécessite aucune saisie ou d'authentification et est uniquement destiné à tester la connectivité:

<?php
ini_set('soap.wsdl_cache_enabled',0);
ini_set('soap.wsdl_cache_ttl',0);

$url        = "https://test.mycustomer.com/api/TestService.svc?wsdl";
$client     = new SoapClient($url, array("trace" => 1, "exception" => 0));

$result = $client->GetMessage(NULL);

echo "<pre>".print_r($result, true)."</pre>";
if($result->GetMessageResult->Status == "Success")
{
    echo "Item deleted!";
}
?>

Si je l'exécute en ligne de commande j'obtiens:

Fatal error: Uncaught SoapFault exception: [HTTP] Could not connect to host in /var/www/my.stage.com/htdocs/common/soaptest.php:8
Stack trace:
#0 [internal function]: SoapClient->__doRequest('<?xml version="...', 'http://459265-d...', 'http://tempuri....', 1, 0)
#1 [internal function]: SoapClient->__call('GetMessage', Array)
#2 /var/www/my.stage.com/htdocs/common/soaptest.php(8): SoapClient->GetMessage(NULL)
#3 {main}
  thrown in /var/www/my.stage.com/htdocs/common/soaptest.php on line 8

Et à partir d'un navigateur j'obtiens:

PHP Notice: 'SoapClient::__doRequest() [soapclient.--dorequest]: php_network_getaddresses: getaddrinfo failed: Name or service not known' 

Dans leur WSDL de ce service, la chaîne "459265" apparaît ici:

<wsdl:service name="TestService">
<wsdl:port name="BasicHttpBinding_ITestService" binding="tns:BasicHttpBinding_ITestService">
<soap:address location="http://459265-dev1/api/TestService.svc"/>
</wsdl:port>
<wsdl:port name="BasicHttpsBinding_ITestService" binding="tns:BasicHttpsBinding_ITestService">
<soap:address location="https://test.mycustomer.com/api/TestService.svc"/>
</wsdl:port>
</wsdl:service>

Donc ma question est, est-ce correct? Si le WSDL avoir une url locale comme ça, que je ne peux pas obtenir à partir de ma boîte?

Un peu plus d'info, lorsque je fais un var_dump sur __getFunctions et __ _ _ getTypes, je reçois

array(2) {
  [0]=>
  string(53) "GetMessageResponse GetMessage(GetMessage $parameters)"
  [1]=>
  string(53) "GetMessageResponse GetMessage(GetMessage $parameters)"
}
array(5) {
  [0]=>
  string(21) "struct GetMessage {
}"
  [1]=>
  string(55) "struct GetMessageResponse {
 string GetMessageResult;
}"
  [2]=>
  string(8) "int char"
  [3]=>
  string(17) "duration duration"
  [4]=>
  string(11) "string guid"
}
  • Sonne comme une question à poser à celui qui soutient que WSDL, mais je pense certainement que vous avez identifié le problème.
InformationsquelleAutor mutatron | 2013-01-17