2010-12-12 4 views
1

Je voudrais envoyer la demande XML suivant à un service Web WSDL:WSDL Problème client avec PHP


<?xml version="1.0" encoding="utf-8"?> 
<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/"> 
<soapenv:Header> 
<wsse:Security xmlns:wsse="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-secext-1.0.xsd"> 
<wsse:UsernameToken xmlns:wsu="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-utility-1.0.xsd" wsu:Id="UsernameToken-'.$nonce.'"> 
<wsse:Username>xxxxx</wsse:Username> 
<wsse:Password Type="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-username-token-profile-1.0#PasswordText">xxxxx</wsse:Password> 
</wsse:UsernameToken> 
<wsu:Timestamp wsu:Id="Timestamp-'.$nonce.'" xmlns:wsu="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-utility-1.0.xsd"> 
<wsu:Created>'.$timestamp.'</wsu:Created> 
<wsu:Expires>'.$expiration.'</wsu:Expires> 
</wsu:Timestamp> 
</wsse:Security> 
</soapenv:Header> 
<soapenv:Body> 
<prep:requestListeSeancesCtrlAcces> 
    <codeManifestation>xxxx</codeManifestation> 
    <!--Optional:--> 
    <debutIntervalle/> 
    <!--Optional:--> 
    <finIntervalle/> 
    </prep:requestListeSeancesCtrlAcces> 
</soapenv:Body> 
</soap:Envelope> 

Comment puis-je faire cela? J'ai essayé l'extension de savon PHP et aussi NuSOAP sans succès :(

Merci pour votre aide

+0

Montrez-nous ce que vous avez essayé. – svens

+0

Vous êtes donc sûr que ce message SOAP correspond au WSDL, et vous voulez savoir comment envoyer ce message en tant que corps d'une requête à un point de terminaison HTTP? – ivy

Répondre

1

Avez-vous essayé HttpRequest :: envoyer Par exemple, voir l'exemple à http://www.php.net/manual/en/function.httprequest-send.php#95734 et remplissez vos propres données.?

<?php 
//set up variables 
$theData = '<?xml version="1.0" encoding="utf-8"?> 
<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/"> 
<soapenv:Header> 
<wsse:Security xmlns:wsse="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-secext-1.0.xsd"> 
<wsse:UsernameToken xmlns:wsu="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-utility-1.0.xsd" wsu:Id="UsernameToken-'.$nonce.'"> 
<wsse:Username>xxxxx</wsse:Username> 
<wsse:Password Type="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-username-token-profile-1.0#PasswordText">xxxxx</wsse:Password> 
</wsse:UsernameToken> 
<wsu:Timestamp wsu:Id="Timestamp-'.$nonce.'" xmlns:wsu="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-utility-1.0.xsd"> 
<wsu:Created>'.$timestamp.'</wsu:Created> 
<wsu:Expires>'.$expiration.'</wsu:Expires> 
</wsu:Timestamp> 
</wsse:Security> 
</soapenv:Header> 
<soapenv:Body> 
<prep:requestListeSeancesCtrlAcces> 
    <codeManifestation>xxxx</codeManifestation> 
    <!--Optional:--> 
    <debutIntervalle/> 
    <!--Optional:--> 
    <finIntervalle/> 
    </prep:requestListeSeancesCtrlAcces> 
</soapenv:Body> 
</soap:Envelope>'; 

$url = 'http://www.example.com'; 
$options = array(); 

//create the httprequest object     
$httpRequest_OBJ = new httpRequest($url, HTTP_METH_POST, $options); 
//add the content type 
$httpRequest_OBJ->setContentType = 'Content-Type: text/xml'; 
//add the raw post data 
$httpRequest_OBJ->setRawPostData ($theData); 
//send the http request 
$result = $httpRequest_OBJ->send(); 
//print out the result 
echo "<pre>"; print_r($result); echo "</pre>"; 
?> 
0

lorsque i i consomme WSDL utiliser cURL

pour modifier les en-têtes et enveloppes utiliser l': curl_setopt ($ ch, CURLOPT_HTTPHEADER, $ header); curl_setopt ($ ch, CURLOPT_POSTFIELDS, $ s oapenvelope);

Questions connexes