2009-01-19 7 views

Répondre

4

Créez un document XML SOAP qui correspond au fichier WSDL et envoyez-le via HTTP POST. Voir here for an example.

Vous envoyez ceci:

POST /webservices/tempconvert.asmx HTTP/1.1 
Host: www.w3schools.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:Body> 
    <CelsiusToFahrenheit xmlns="http://tempuri.org/"> 
     <Celsius>string</Celsius> 
    </CelsiusToFahrenheit> 
    </soap12:Body> 
</soap12:Envelope> 

Et obtenez ce retour:

HTTP/1.1 200 OK 
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:Body> 
    <CelsiusToFahrenheitResponse xmlns="http://tempuri.org/"> 
     <CelsiusToFahrenheitResult>string</CelsiusToFahrenheitResult> 
    </CelsiusToFahrenheitResponse> 
    </soap12:Body> 
</soap12:Envelope> 
+0

Salut Josh, Que se passe-t-il si je souhaite obtenir un fichier de rapport (en format pdf) du service web vers php, est-ce que saop est toujours la meilleure façon d'utiliser? –

+0

@Jin: vous pouvez envoyer un fichier binaire directement dans le fichier XML renvoyé en l'encodant avec UUEncode ou base64. Un meilleur plan serait de générer le PDF sur le serveur, lui donner une URL unique et ensuite le client peut obtenir le rapport en deux requêtes - une requête SOAP pour générer le rapport suivi d'une requête http simple pour récupérer le rapport. – Eclipse

0

Je ne l'ai jamais fait dans PHP-> C#, je l'ai utilisé C# pour appeler webservices PHP et moi J'ai toujours utilisé le wrapper Zend Framework pour les classes PHP natives. Vous devriez vérifier le Zend_Soap_Client qui, si c'est comme le Zend_Soap_Server, est juste un emballage avec des choses à valeur ajoutée autour des classes PHP SOAP.

Et, je devrais dire, tout ce qu'il fait est de conclure ce que @Josh a dit dans une classe agréable et fait des choses automatiquement pour vous.

1

Il n'y a rien de ce qu'on appelle un «service Web C#». Ce que vous voulez dire, c'est un service Web XML basé sur les appels à distance SOAP et WSDL pour la description.

En effet, tous les services SOAP sont supposés compatibles entre eux, que ce soit .Net, PHP ou Java. Mais en pratique, des problèmes mineurs compliquent la tâche.

Il existe de nombreuses bibliothèques SOAP pour PHP, mais pour la connexion à un service Web XML ASP.NET de PHP, mais nuSOAP a donné les meilleurs résultats pour moi. C'est fondamentalement un ensemble de classes PHP pour consommer des services Web basés sur SOAP. Le code client le plus simple semble comme ceci:

<?php 
// Pull in the NuSOAP code 
require_once('nusoap.php'); 
// Create the client instance 
$client = new soapclient('http://localhost/phphack/helloworld.php'); 
// Call the SOAP method 
$result = $client->call('hello', array('name' => 'Scott')); 
// Display the result 
print_r($result); 
?> 

Voir http://www.scottnichol.com/nusoapintro.htm pour plus d'exemples.

+0

L'exemple est tiré de l'url donné. Il se connecte à un service Web hébergé php, mais la connexion à un service basé sur .net n'est pas différente. –

Questions connexes