2017-07-24 1 views
0

Je suis en train d'utiliser un webservice (envois de Swiss Post Track) de mettre à jour les statuts des commandes à Prestashop livré à la livraison.requête SOAP avec PHP en utilisant un fichier xml au lieu de wsdl

Le fichier que j'ai reçu des demandes ressemble à ceci (.xml)

<?xml version="1.0" encoding="UTF-8"?> 

<wsdl:definitions xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/" xmlns:soap11="http://schemas.xmlsoap.org/wsdl/soap/" xmlns:soap12="http://schemas.xmlsoap.org/wsdl/soap12/" xmlns:http="http://schemas.xmlsoap.org/wsdl/http/" xmlns:mime="http://schemas.xmlsoap.org/wsdl/mime/" xmlns:wsp="http://www.w3.org/ns/ws-policy" xmlns:wsp200409="http://schemas.xmlsoap.org/ws/2004/09/policy" xmlns:wsp200607="http://www.w3.org/2006/07/ws-policy" xmlns:ns0="http://www.post.ch/npp/trackandtracews/v02/masterdata/definitions" targetNamespace="http://www.post.ch/npp/trackandtracews/v02/masterdata/definitions"> 
<wsdl:types xmlns:xsd="http://www.w3.org/2001/XMLSchema"> 
<xsd:schema> 
<xsd:import schemaLocation="MasterData.ws.xsd1.xsd" namespace="http://www.post.ch/npp/masterdata/v02"/></xsd:schema></wsdl:types> 
<wsdl:message name="DetailRequest"> 
<wsdl:part name="DetailRequest" element="xsns:DetailReq" xmlns:xsns="http://www.post.ch/npp/masterdata/v02"/></wsdl:message> 
<wsdl:message name="DetailResponse"> 
<wsdl:part name="DetailResponse" element="xsns:DetailRes" xmlns:xsns="http://www.post.ch/npp/masterdata/v02"/></wsdl:message> 
<wsdl:message name="EventsRequest"> 
<wsdl:part name="EventsRequest" element="xsns:EventsReq" xmlns:xsns="http://www.post.ch/npp/masterdata/v02"/></wsdl:message> 
<wsdl:message name="EventsResponse"> 
<wsdl:part name="EventsResponse" element="xsns:EventsRes" xmlns:xsns="http://www.post.ch/npp/masterdata/v02"/></wsdl:message> 
<wsdl:message name="StatusesRequest"> 
<wsdl:part name="StatusesRequest" element="xsns:StatusReq" xmlns:xsns="http://www.post.ch/npp/masterdata/v02"/></wsdl:message> 
<wsdl:message name="StatusesResponse"> 
<wsdl:part name="StatusesResponse" element="xsns:StatusRes" xmlns:xsns="http://www.post.ch/npp/masterdata/v02"/></wsdl:message> 
<wsdl:portType name="MasterDataResource"> 
<wsdl:operation name="GetAllDetails"> 
<wsdl:input name="DetailRequest" message="ns0:DetailRequest"/> 
<wsdl:output name="DetailResponse" message="ns0:DetailResponse"/></wsdl:operation> 
<wsdl:operation name="GetAllEvents"> 
<wsdl:input name="EventsRequest" message="ns0:EventsRequest"/> 
<wsdl:output name="EventsResponse" message="ns0:EventsResponse"/></wsdl:operation> 
<wsdl:operation name="GetAllStatuses"> 
<wsdl:input name="StatusesRequest" message="ns0:StatusesRequest"/> 
<wsdl:output name="StatusesResponse" message="ns0:StatusesResponse"/></wsdl:operation></wsdl:portType> 
<wsdl:binding name="MasterDataBinding" type="ns0:MasterDataResource"> 
<soap11:binding transport="http://schemas.xmlsoap.org/soap/http" style="document"/> 
<wsdl:operation name="GetAllDetails"> 
<soap11:operation soapAction="http://www.post.ch/npp/masterdataws/v02/GetAllDetails" style="document"/> 
<wsdl:input name="DetailRequest"> 
<soap11:body use="literal"/></wsdl:input> 
<wsdl:output name="DetailResponse"> 
<soap11:body use="literal"/></wsdl:output></wsdl:operation> 
<wsdl:operation name="GetAllEvents"> 
<soap11:operation soapAction="http://www.post.ch/npp/masterdataws/v02/GetAllEvents" style="document"/> 
<wsdl:input name="EventsRequest"> 
<soap11:body use="literal"/></wsdl:input> 
<wsdl:output name="EventsResponse"> 
<soap11:body use="literal"/></wsdl:output></wsdl:operation> 
<wsdl:operation name="GetAllStatuses"> 
<soap11:operation soapAction="http://www.post.ch/npp/masterdataws/v02/GetAllStatuses" style="document"/> 
<wsdl:input name="StatusesRequest"> 
<soap11:body use="literal"/></wsdl:input> 
<wsdl:output name="StatusesResponse"> 
<soap11:body use="literal"/></wsdl:output></wsdl:operation></wsdl:binding> 
<wsdl:service name="MasterDataService"> 
<wsdl:port name="MasterDataPort" binding="ns0:MasterDataBinding"> 
<soap11:address location="https://webservices.post.ch:443/IN_MYPBxTT/services/MasterData.ws"/></wsdl:port> 
<wsdl:port name="MasterDataPort.0" binding="ns0:MasterDataBinding"> 
<soap11:address location="https://webservices.post.ch:443/IN_MYPBxTT/services/MasterData.ws"/></wsdl:port></wsdl:service></wsdl:definitions> 

Et je suis en train de ce fichier avec acces ce PHP

// SOAP Configuration 
$SOAP_wsdl_file_path = 'MasterData.xml'; 

$SOAP_config = array(
    // Webservice Endpoint URL 
    'location' => 'https://webservices.post.ch/IN_MYPBxTT/services/TrackAndTraceDFU.ws', 
    // Webservice Login 
    'login' => $login, 
    'password' => $pass, 
); 

// SOAP Connection 
try { 
    $SOAP_Client = new SoapClient($SOAP_wsdl_file_path, $SOAP_config); 
} catch (SoapFault $fault) { 
    die('<pre>Error in SOAP Initialization: '.$fault->__toString().'</pre>'); 
} 

?> 

Cela génère cette erreur: Je comprends que ce problème vient du fait que j'utilise un fichier xml au lieu d'un fichier wsd. l, mais y at-il de toute façon je peux utiliser ce fichier xml avec SoapClient() ou existe-t-il un moyen de convertir mon fichier xml en wsdl pour l'utiliser avec SoapClient()?

Merci, toute aide serait beaucoup appreaciated!

Répondre

0

Je ne suis pas sûr de ce que vous avez besoin exactement. Les fichiers WSDL sont également des fichiers XML, mais l'inverse ne s'applique pas. XML est un format de données générique qui peut contenir n'importe quel type d'information. WSDL est un code XML spécifique utilisé pour décrire les services Web.

S'il vous plaît vérifier wiki for further clarification. Vous ne savez pas quel type de fichier XML vous avez. Il peut s'agir de données de test ou de WSDL avec un suffixe de fichier incorrect. Vous devez vérifier le contenu des fichiers

fichier WSDL de l'échantillon se trouve ici: https://www.w3.org/2001/04/wsws-proceedings/uche/wsdl.html