Rechercher : dans
Par :

Webservice et PHP / XML

Dernière réponse le 29 oct 2008 à 18:07:53 niac, le 12 oct 2007 à 11:29:29 
 Signaler ce message aux modérateurs

Bonjour,

J'ai une problematique concernant l'utilisation d'un webservice....
Je dois interfacer un logiciel developpé sous windev et un webservice privé (deja redigé et WSDL fourni) par l'intermediaire d'une page php. En effet le fournisseur du webservice, securise son webservice en acceptant une requete depuis une IP unique, et non depuis une IP dynamique que le logiciel chez les utilisateurs utilisera....Cette intermediaire nous sert aussi a identifier le client qui va utiliser le webservice externe, et enregistrer en bdd, les requetes et les reponses...
Je recois du logiciel une requete XML dejà préparée ayant la structure suivantes (attention je passe volontairement sur les objets, qui sont redigé conformément au WSDL)

<?xml version="1.0" encoding="ISO-8859-1"?>
<soap:Envelope
xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/"
xmlns:soapenc="http://schemas.xmlsoap.org/soap/encoding/"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:xsd="http://www.w3.org/2001/XMLSchema"
xmlns:tns="http://site/webservices/"
xmlns="http://site/webservices/">
<soap:Body soap:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/">
<tns:GetValuation>
<Settings xmlns:lns="http://site/webservices/" xsi:type="lns:ETGsettingType" id="id0">
VALEURS A SOUMETTRE
</Settings>
<Valuation xmlns:lns="http://site/webservices/" xsi:type="lns:ValuationType" id="id0">
VALEURS A SOUMETTRE
</Valuation>
</tns:GetValuation>
DESCRIPTION DES VALEURS SOUMISES
</soap:Body>
</soap:Envelope>

J'enregistre correctement les requetes du logiciel en bdd, mais je suis bloquée à la phase d'envoi du fichier XML vers notre partenaire...

En effet je ne vois pas comment faire pour envoyer les données vers le webservice, et j'ai testé dejà des exemples de SOAP PHP, ainsi que de CURL, qui n'ont pas fonctionné....

Est ce que qq'un a de la documentation ou un exemple d'envoi d'un fichier XML vers un webservice ???
Merci d'avance....

niac

Meilleures réponses pour « Webservice et PHP / XML » dans :
PHP - Parser du XML VoirIntroduction à XML PHP permet l'analyse syntaxique (parsage ou parsing en anglais) d'un document XML. Le langage XML (eXtensible Markup Language, traduisez Langage à balises extensibles) est un métalangage, c'est-à-dire un langage permettant de...
DOM (Document Object Model) et SAX (Simple API for XML) VoirXML permet de définir la structure du document uniquement, ce qui permet d'une part de pouvoir définir séparément la présentation de ce document, d'autre part d'être capable de récupérer les données présentes dans le document pour les...
Web Services VoirAvec l'interconnexion des ordinateurs en réseau et en particulier à travers internet, il devient possible de faire fonctionner des applications sur des machines distantes. L'intérêt d'une application fonctionnant à distance peut à première vue...

1

madinico, le 18 mar 2008 à 10:07:36

Bonjour Niac,

Je suis dans la même problématique que toi et je souhaiterais savoir si tu as trouvé une solution à ce problème.

Si oui, pourrais-tu partager cette solution afin que je puisse l'implémenter dans le cadre de mon activité ?

En te remerciant pour ton aide.

Madinico.

Répondre à madinico

2

latristef, le 26 jun 2008 à 13:29:21

Bonjour,
J'ai moi aussi le même problème.
Aviez-vous finalement trouvé la solution ?
Merci beaucoup !

Répondre à latristef

3

DJY80, le 25 aoû 2008 à 15:37:43

Bonjour,
J'ai moi aussi le même problème.
Aviez-vous finalement trouvé la solution ?
Merci beaucoup !

Répondre à DJY80

4

Blackmagic, le 23 oct 2008 à 22:33:53

Hello

Voici comment j'envoie du SOAP sans soucis

function sendData($request=''){
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, 'http://cert.synxis.com/interface/ota2004a.aspx');
curl_setopt($ch, CURLOPT_POST,1);
curl_setopt($ch, CURLOPT_VERBOSE,1);
curl_setopt($ch, CURLOPT_POSTFIELDS, 'xml='.$request);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_NOPROGRESS, 1);
$headers = array();
$headers[] = "Content-Type: application/soap+xml; charset=utf-8";
//$headers[] = "Content-Lenght: nnn";
curl_setopt($ch, CURLOPT_HTTPHEADER, $headers);
if($response = curl_exec($ch)) {
curl_close($ch);
return $response;
} else {
$error = curl_error($ch);
curl_close($ch);
die($error);
}
}

Répondre à Blackmagic

5

 niac, le 29 oct 2008 à 18:07:53
  • +1

Je viens de voir les réponses à mon message...
Et en effet j'ai résolu mon probleme de la facon suivante :

$post_data = $Requete; // Requete au format XML lu en BDD

$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, "http://urlduwebserviceappel.ext" ); //URL du webservice WSA / ASP / PHP
curl_setopt($ch, CURLOPT_POST, 1 );
curl_setopt($ch, CURLOPT_POSTFIELDS, $post_data);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
$postResult = curl_exec($ch);

if (curl_errno($ch)) {
print curl_error($ch);
}
curl_close($ch);


Ensuite dans mon cas perso, je stockais les réponses en base de données et retournais les réponses formaté correctement en amont par un simple :

print "$postResult";

Pour ceux qui ont un doute quand au formatage correct de la réponse fourni par le webservice, je vous conseille la methode de blackmagic

niac

Répondre à niac
Collection CommentÇaMarche.net