Я хотел бы отправить следующий 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, но безуспешно: (
Спасибо за вашу помощь.
Вы пробовали 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 "
когда я потребляю wsdl, я использую cURL
для модификации заголовков и конвертов используйте это: curl_setopt ($ ч, CURLOPT_HTTPHEADER, $ заголовка); curl_setopt ($ ch, CURLOPT_POSTFIELDS, $ soapenvelope);