2010-03-26 6 views
6

Mam problem z uzyskaniem niestandardowego nagłówka mydła do pracy z PHP5. Czy ktoś może mnie poprowadzić, proszę.Niestandardowy nagłówek używający funkcji mydła PHP

Co mogę wymagać jest coś takiego

<SOAP-ENV:Header> 
    <USER>myusername</USER> 
    <PASSWORD>mypassword</PASSWORD> 
</SOAP-ENV:Header> 

Co pojawia się:

<SOAP-ENV:Header> 
    <ns2:null> 
    <USER>myusername</USER> 
    <PASSWORD>mypassword</PASSWORD> 
    </ns2:null> 
</SOAP-ENV:Header> 

Chciałbym usunąć tagi nazw. Kod mam użyć, aby uzyskać to:

class Authstuff { 
    public $USER; 
    public $PASSWORD; 

    public function __construct($user, $pass) { 
    $this->USER = $user; 
    $this->PASSWORD = $pass; 
    } 
} 

$auth = new Authstuff('myusername', 'mypassword'); 
$param = array('Authstuff' => $auth); 
$authvalues = new SoapVar($auth,SOAP_ENC_OBJECT); 

$header = new SoapHeader('http://soapinterop.org/echoheader/',"null",$authvalues); 

Null nie wydaje się przechodzić .. z 'null' I wciąż przestrzeń nazw, jak w drugim przykładzie .. jak wyłączyć tę NS. .. Dzięki za pomoc z góry ..

$headers = array(); 
$headers[] = new SoapHeader(null, 'USER', $username); 
$headers[] = new SoapHeader(null, 'PASSWORD', $password); 

$client->__setSoapHeaders($headers); 
try { 
    $result = $client->getAvailableLicensedDNCount('ASX01'); 
    print_r($result); 

Fatal error: SoapHeader::SoapHeader(): Invalid parameters. Invalid namespace. in /usr/home/deepesh/SoapCalls/deepesh7.php on line 29

Odpowiedz

2

w przykładzie tworzony tylko jeden wpis SoapHeader (z przestrzeni nazw, ale o nazwie „null”). Pożądany wynik zawiera dwa osobne wpisy nagłówka (bez nazw), więc może spróbować:

$headers = array(); 
$headers[] = new SoapHeader(NULL, 'USER', $auth->USER); 
$headers[] = new SoapHeader(NULL, 'PASSWORD', $auth->PASSWORD); 

Można by następnie przekazać tablicę do wywołania mydła $headers (bezpośrednio lub za pośrednictwem __setSoapHeaders góry).

3

potrzebowałem czegoś podobnego i był w stanie użyć XSD_ANYXML SoapVar do osiągnięcia tego celu:

$auth = "<username>$username</username>"; 
    $auth .= "<password>$password</password>"; 
    $auth_block = new SoapVar($auth, XSD_ANYXML, NULL, NULL, NULL, NULL); 

    $header = new SoapHeader('http://schemas.xmlsoap.org/soap/envelope/', 'Header', $auth_block); 
    $soap_client->__setSoapHeaders($header); 

Spowodowało:

<SOAP-ENV:Header> 
    <username>12345</username> 
    <password>12</password> 
</SOAP-ENV:Header> 
+0

Dziękuję !! Uratowałem mój dzień! –