2010-07-19 25 views
0

Je reçois une demande dans la méthode suivante, mais le message de savon ne semble pas contenir le UsernameToken élément:manquant élément UsernameToken

$policy = new WSPolicy(
    array(
     'useUsernameToken'=>true 
    ) 
); 
$security = new WSSecurityToken(
    array(
     'user'=>$username, 
     'passwordType'=>'PlainText', 
     'password'=>$password 
    ) 
); 
// create client in WSDL mode 
$client = new WSClient(
    array (
     'wsdl'=>$service_wsdl, 
     'to'=>$service_url, 
     'policy'=>$policy, 
     'securityToken'=>$security, 
     'trace'=>1 
    ) 
); 
$proxy = $client->getProxy(); 
$proxy->Ping(); 

La demande qui est produit ressemble à ceci:

<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" soapenv:mustUnderstand="1"> 
     </wsse:Security> 
    </soapenv:Header> 
    <soapenv:Body> 
     <ns1:Ping xmlns:ns1="http://streamlinedsalestax.org/efile"/> 
    </soapenv:Body> 
</soapenv:Envelope> 

Vous remarquerez que l'élément UsernameToken est complètement manquant.

Répondre

0

que diriez-vous .. ajouté « sécurité » à WS-Policy

<?php 
$policy = new WSPolicy(
    array('security' => array(
     'useUsernameToken'=>true 
    )) 
); 
$security = new WSSecurityToken(
    array(
     'user'=>$username, 
     'passwordType'=>'PlainText', 
     'password'=>$password 
    ) 
); 
// create client in WSDL mode 
$client = new WSClient(
    array (
     'wsdl'=>$service_wsdl, 
     'to'=>$service_url, 
     'policy'=>$policy, 
     'securityToken'=>$security, 
     'trace'=>1 
    ) 
); 
$proxy = $client->getProxy(); 
$proxy->Ping(); 

+0

Si la configuration I l'objet comme vous l'avez dit WS-Policy alors une demande ne se produit .... et $ client-> retourne getLastRequest() un chaîne vide. Je vois aussi: Remarque: Variable indéfinie: payload_node dans /home/enterprise/includes/wso2/dynamic_invocation/wsf_wsdl_serialization.php à la ligne 157 – dorgan