PHP SOAP Problème: La référence d'objet n'est pas définie sur une instance d'un objet
Je suis en train de construire une interface pour https://ws.farebuzz.com/FlightGateway.asmx?WSDL à l'aide de php et de SoapClient classe.
J'ai réussi à obtenir sur l'en-tête d'authentification mais je suis coincé quand j'essaie d'appeler une méthode .. je suis toujours :
Uncaught exception de type soapfault: [soap:Serveur] le Serveur n'a pas pu traiter la demande. ---> Objet de référence non définie à une instance d'un objet.
J'ai essayé de l'appeler comme ça (comme objet) :
class SearchFlights{
public $NumberOfAdults;
public $ClassOfService;
public $TypeOfTrip;
public $FromCity;
public $ToCity;
}
$parameters = new SearchFlights();
$parameters->NumberOfAdults = 2;
$parameters->ClassOfService = 'ECONOMY';
$parameters->FromCity = 'ECONOMY';
$parameters->ToCity = '1te';
$parameters->TypeOfTrip = 'NONE';
$this->client->SearchFlights($parameters);
et comme un tableau, par exemple :
$parameters = array('ToCity' => 'testttt',...);
mais j'ai eu le même message d'erreur. Quelqu'un peut-il aider?
Grâce
Sorin
source d'informationauteur
Vous devez vous connecter pour publier un commentaire.
Votre WSDL états qu'il doit être appelé de cette façon:
Noter que le
searchRequest
nom est important.Il y a également divers obligatoire entrées de ce service, vous devez vous assurer que ceux qui sont présents. En regardant votre code, il vous manque quelques.
Prendre un coup d'oeil à la
FlightSearchRequest
de type complexe ici. Chaque param qui aminOccurs=1
est nécessaire.Essayez d'utiliser ceci:
J'ai eu des problèmes en essayant d'accéder à une .net webservice et cela a résolu pour moi.
Si je comprends le WSDL correctement, le SearchFlights objet est censé contenir un FlightSearchRequest objet. C'est ce dernier qui contient les paramètres.
Essayez ceci:
J'étais également curieux de connaître la réponse à cette question et finalement j'ai appris à connaître la raison de ceci:
Les nœuds qui nous l'envoyer par requête SOAP doit être connu de nous avec des types de Données et si elles sont obligatoires ou pas. Donc ici, si l'un de ces nœuds, suivie par des instructions strictes de WSDL ne devrait pas être suivie, nous allons obtenir l'erreur qui dira que "la référence d'Objet n'est pas définie à une instance d'un objet".
Je vais vous donner un exemple que j'ai rencontrés:
J'ai eu le même problème, et j'ai appris que je n'étais pas à l'envoi de la valeur à un nœud, qui était à l'exception d'au moins une valeur ou une occurrence de celui-ci, puis-je valider sur ma fin, en cas de succès j'ai été l'envoi de cette valeur sinon une chaîne vide, qui disait que WSDL que c'est au moins 1 événement et a une valeur.
Finalement j'ai résolu ce bug.
De base ici est que, si les nœuds de ceux qui sont obligatoires et ne pas envoyer parfaitement bien s'élever dans cette exception ou bien envoyer chaîne vide dans ces nœuds.
Grâce