Проблема клиента WSDL с PHP - PullRequest
1 голос
/ 13 декабря 2010

Я хотел бы отправить следующий XML-запрос в веб-службу WSDL:


<?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>

Как я могу это сделать?Я попробовал расширение PHP-мыла, а также NuSOAP, но безуспешно: (

Спасибо за вашу помощь.

Ответы [ 2 ]

1 голос
/ 13 декабря 2010

Вы пробовали HttpRequest :: send? Например. см. пример на http://www.php.net/manual/en/function.httprequest-send.php#95734 и введите свои данные:

<code><?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 "
"; ?>
0 голосов
/ 07 апреля 2011

когда я потребляю wsdl, я использую cURL

для модификации заголовков и конвертов используйте это: curl_setopt ($ ч, CURLOPT_HTTPHEADER, $ заголовка); curl_setopt ($ ch, CURLOPT_POSTFIELDS, $ soapenvelope);

...