PHP SAVON de Requête HTTP
En dépit d'être un développeur PHP pour un moment, je suis juste en train de faire mon premier goût de services web. J'espérais obtenir un peu d'aide, comme le livre que j'utilise est pas beaucoup d'aide. L'une de ses entreprises font des affaires avec des m'a donné un document XML dans le format doit être (je vais poster une partie de celui-ci). En raison de mon inexpérience dans ce sujet, je ne suis pas vraiment sûr de quoi faire. J'ai besoin de savoir comment faire pour envoyer ce message à leur vie POST de la page, comment faire pour recevoir la réponse, et j'en ai besoin pour créer toute sorte de page WSDL? Toute aide ou d'orientation seraient grandement appréciés, et s'il vous plaît, ne pas simplement envoyer un lien pour le manuel php. Je n'ai évidemment été là, comme c'est typiquement l'endroit où aller pour de l'aide.
POST /sample/order.asmx HTTP/1.1
Host: orders.sample.com
Content-Type: application/soap+xml; charset=utf-8
Content-Length: length
<?xml version="1.0" encoding="utf-8"?>
<soap12:Envelope xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:soap12="http://www.w3.org/2003/05/soap-envelope">
<soap12:Header>
<AuthenticationHeader xmlns="http://sample/">
<Username>string</Username>
<Password>string</Password>
</AuthenticationHeader>
<DebugHeader xmlns="http://sample/">
<Debug>boolean</Debug>
<Request>string</Request>
</DebugHeader>
</soap12:Header>
<soap12:Body>
<AddOrder xmlns="http://sample/">
<order>
<Header>
<ID>string</ID>
<EntryDate>dateTime</EntryDate>
<OrderEntryView>
<SeqID>int</SeqID>
<Description>string</Description>
</OrderEntryView>
<ReferenceNumber>string</ReferenceNumber>
<PONumber>string</PONumber>
<Comments>string</Comments>
<IpAddress>string</IpAddress>
</Header>
</order>
</AddOrder>
</soap12:Body>
</soap12:Envelope>
Ci-dessus est le AddOrder document XML, on m'a donné (j'ai enlevé la plupart des corps). S'il vous plaît laissez-moi savoir si plus détaillée est nécessaire, comme je veux être précis que possible, donc je suis en mesure de comprendre comment envoyer ce
OriginalL'auteur Brett | 2012-01-10
Vous devez vous connecter pour publier un commentaire.
Vous avez un couple d'options! Vous pouvez utiliser du savon d'objets pour créer la demande sur la base d'un document WSDL connaissent la façon correcte de parler au serveur distant. Vous pouvez voir comment le faire à la Manuel PHP.
Alternativement, vous pouvez utiliser CURL pour faire le travail. Vous aurez besoin de savoir où poster les données (ce qui lui ressemble est, dans l'exemple ci-dessus), alors vous pouvez simplement faire quelque chose comme ceci:
Vous ensuite devrait ont de la suite dans les $result var. Vous pouvez ensuite essayer de le convertir en XML, doc, même si parfois j'ai trouvé due à l'encodage cela ne fonctionne pas:
OriginalL'auteur Paul Bain
Que le fournisseur du service, l'entreprise doit vous fournir un document WSDL qui décrit le service informatique termes. Généralement, ils sont fournis via une url comme http://their.service.url/wsdl ou similaire.
Une fois que vous avez cela, vous devriez être en mesure de créer un
SoapClient
instance d'interagir avec le service.OriginalL'auteur Rob Agar
Ainsi c'est certainement l'une requête SOAP, de sorte que vous aurez besoin d'utiliser le SAVON pour fonctionner correctement avec ce ou vous êtes dans l'un des principaux maux de tête.
J'ai eu plusieurs rencontre avec du SAVON et de l'PHP et à chaque fois que j'ai dû compter sur une bibliothèque externe. La plus récente que j'ai eu à utiliser a été Zend_Soap_Client.
Mais là encore, vous avez le WSDL disponible? Vous avez besoin d'un WSDL pour être en mesure d'utiliser un webservice SOAP à l'aide d'un client de la bibliothèque.
http://framework.zend.com/manual/en/zend.soap.html
Et voici un exemple de mon code, je l'ai utilisé, j'espère que ça va vous aider à démarrer
OriginalL'auteur Mathieu Dumoulin