Webservice et PHP / XML

niac -  
 overdoze -
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

Blackmagic
 
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   Statut Membre Dernière intervention   107
 
Ton code m'as permis de bien avancer, merci beaucoup !
0
niac
 
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
DJY80
 
Bonjour,
J'ai moi aussi le même problème.
Aviez-vous finalement trouvé la solution ?
Merci beaucoup !
1
madinico
 
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
latristef
 
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
overdoze
 
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