

soap hlavička v php
prosím byl by tu někdo kdo by mi poradil co dělám špatně?
$g_soap = @new SoapClient($to.'?wsdl');
$header_part = '
<wsse:Security soap:mustUnderstand="1">
<wsu:Timestamp wsu:Id="Timestamp-781c4afa-27ec-4a14-acd4-e5d9d08f1221">
<wsu:Created>2012-02-21T08:22:14Z</wsu:Created>
<wsu:Expires>2012-02-23T08:27:14Z</wsu:Expires>
</wsu:Timestamp>
<wsse:UsernameToken xmlns:wsu="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-utility-1.0.xsd" wsu:Id="SecurityToken-27e20ce2-b3da-42e6-ae63-51aa0337ff34">
<wsse:Username>'.$pid.'\\'.$username.'</wsse:Username>
<wsse:Password Type="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-username-token-profile-1.0#PasswordText">'.$password.'</wsse:Password>
<wsu:Created>'.date('Y-m-d').'T'.date('H:i:s').'Z</wsu:Created>
</wsse:UsernameToken>
</wsse:Security>
';
$Security_header = new SoapVar( $header_part, XSD_ANYXML, null, null, null );
$soap_header[] = new SoapHeader( 'http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-secext-1.0.xsd', 'Header', $Security_header,true );
$g_soap->__setSoapHeaders($soap_header);
$ws_info = array('requestXml'=>array('Xrg'=>array('Ws-info'=>array('Typ-pozadavku'=>'kompletni'))));
$response = $g_soap->__soapCall('WsInfo',$ws_info,NULL,$soap_header);
obsah $header_part je už samotná hlavička. obsah této proměnné má být obalen jen <soap:header> ... Když nyní tento skript spustím obdržím následující hlášku
PHP Fatal error: Uncaught SoapFault exception: [HTTP] Bad Request in C:\wwwroot\docs\soap_g\soap_client.php:38
Stack trace:
#0 [internal function]: SoapClient->__doRequest('<?xml version="...', 'xxx.xx.x...', 'www.xxxx...', 1, 0)
#1 C:\wwwroot\docs\soap_g\soap_client.php(38): SoapClient->__soapCall('WsInfo', Array, NULL, Array)
#2 {main}
thrown in C:\wwwroot\docs\soap_g\soap_client.php on line 38
To "Bad Request" vyzerá, že je z odpovede (400 Bad Request), takže si pozri, či nie je v tele odpovede napísaný dôvod pomocou funkcie __getLastResponse (nezabudni zapnúť trace).
Ďalej by som pozrel aj aký request odosielaš (__getLastRequest). Napr. odkiaľ má vedieť, aký namespace myslíš pod wsse?
díky, pomohlo to.. odladil jsem si to a už to jede, ovšem neustále mi soapvar házel namespace (ns1,ns2....), takže jsem toto musel vyřešit tak, že si sesmolím celý dotaz do proměnné a následně jej předloží __doRequest