Webservice et PHP / XML

Fermé
niac - 12 oct. 2007 à 11:29
 overdoze - 8 mars 2012 à 15:59
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
A voir également:

5 réponses

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);
}
}
3
jypyx Messages postés 683 Date d'inscription dimanche 28 octobre 2007 Statut Membre Dernière intervention 28 novembre 2012 107
12 juil. 2011 à 10:50
Ton code m'as permis de bien avancer, merci beaucoup !
0
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
2
Bonjour,
J'ai moi aussi le même problème.
Aviez-vous finalement trouvé la solution ?
Merci beaucoup !
1
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.
0
Bonjour,
J'ai moi aussi le même problème.
Aviez-vous finalement trouvé la solution ?
Merci beaucoup !
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
Bonjour,
moi aussi j'ai le même problème que niac: j'ai une application en php et l'autre en windev, je vais faire un webservice entre les deux pour échanger des données sous format d'un tableau.
l'application windev est installé sur un serveur, comment je peut envoyé les données via une adresse web?
0