Fatal error: Uncaught exception de type soapfault: [WSDL]
Je vais avoir du mal à appeler un service web j'ai mis en place à partir de PHP. L'obfuscation adresse http://XXX.XXX.XXX.XXX/test.asmx?wsdl
dans le message d'erreur ci-dessous retourne valide WSDL. J'ai été tenté de l'appeler comme un service web à l'aide d'un VB.net client, mais quand je l'appelle à partir de PHP sous Debian, j'obtiens le message suivant:
Fatal error: Uncaught exception de type soapfault: [WSDL] SAVON d'ERREUR: Analyse d'un WSDL: Impossible de charger à partir de 'http://XXX.XXX.XXX.XXX/test.asmx?wsdl' dans /var/www/domain/monsiteweb.com/public_html/catalogue/fomeus/commandes.php:101 Trace de la pile: #0 /var/www/domain/mywebsite.com/public_html/catalog/fomeus/orders.php(101): SoapClient->SoapClient('http://XXX.XXX.XXX.XXX/', Array) #1 {principal} jeté dans /var/www/domain/mywebsite.com/public_html/catalog/fomeus/orders.php sur la ligne 101
Quel pourrait être le problème? J'ai inclus mon code pour le service web et le client PHP ci-dessous.
Service Web:
Imports System.Web.Services
Imports System.Web.Services.Protocols
Imports System.ComponentModel
...
' To allow this Web Service to be called from script, using ASP.NET AJAX, uncomment the following line.
' <System.Web.Script.Services.ScriptService()> _
<System.Web.Services.WebService(Namespace:="http://tempuri.org/")> _
<System.Web.Services.WebServiceBinding(ConformsTo:=WsiProfiles.BasicProfile1_1)> _
<ToolboxItem(False)> _
Public Class WebService1
Inherits System.Web.Services.WebService
<WebMethod()> _
Public Function HelloWorld() As String
Return "Hello World"
End Function
End Class
Client PHP:
require_once($_SERVER['DOCUMENT_ROOT']."/catalog/fomeus/includes/soap/nusoap.php");
$objClient = new soapclient("http://XXX.XXX.XXX.XXX/test.asmx?wsdl",
array('trace' => 1, 'exception' => 0, 'cache_wsdl' => 0));
print_r($objClient -> HelloWorld());
Je suis en utilisant PHP version 5.2.6 si c'est de l'aide. J'ai été en passant par beaucoup de messages dans les différents forums à essayer de comprendre quel est le problème. Beaucoup de gens ont eu le même problème, mais aucune des solutions que j'ai trouvé à ce jour de travail pour moi. Toute aide serait grandement appréciée.
- Je n'ai aucune idée de ce que cela peut être, mais, est-il possible pour vous d'essayer nuSOAP?
- essayez d'emballer un bloc try..catch autour de la ligne où vous créez l'objet SoapClient. N'oubliez pas de la prise doit être d'un type de type soapfault - c'est à dire des captures (de type soapfault $e){} plutôt que de catch (Exception $e) {} à l'Intérieur de la prise, soit de requête à l'exception des champs, (getMessage, etc) ou var_dump l'exception, et puis après ce qu'il vous dit.
- Pouvez-vous poster le wsdl?
- Où on lit: "exception" ne faut-il pas lire "exceptions"?
Vous devez vous connecter pour publier un commentaire.
Une autre option à considérer est cURL. Vous pouvez créer votre charge comme une chaîne de caractères XML et de l'envoyer vers la même URL à l'aide de cURL. Vous serait alors nécessaire de saisir le code de réponse et les processus appropriés. Quand j'ai eu des problèmes avec la SOAPClient, j'ai déménagé à cURL - fonctionne comme un charme.
Si vous utilisez nusoap (php 5.2 est un natif de soapclient, ce que je préfère), la première chose que je vois est que vos arguments. Argument n ° 2 pour nusoap de soapclient constructeur doit être de type boolean TRUE, si vous êtes en utilisant le WSDL, et non pas un tableau. Essayez:
Voilà comment j'ai été capable de travailler avec wsdl dans le passé.
Si vous utilisez le client natif, et à avoir des problèmes avec le wsdl, vous pouvez toujours contourner et prendre directement les appels, comme suit:
Qui devrait fonctionner, mais n'est pas aussi facile à naviguer que wsdl.
d'essayer de tourner sur php_soap.dll et php_openssl.dll dans votre php.ini.
Situé dans le dossier d'apache \apache\apache2.4.2\bin
enlever le ";"
L'ajout d'index.php a travaillé pour moi de travailler sur une application php