2010-03-26 27 views
6

Tôi đang gặp sự cố khi tải tiêu đề xà phòng tùy chỉnh để làm việc với PHP5. Ai có thể hướng dẫn tôi làm ơn.Tiêu đề tùy chỉnh sử dụng chức năng xà phòng PHP

Những gì tôi cần là một cái gì đó như thế này

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

Những gì tôi nhận được là:

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

Tôi muốn loại bỏ các thẻ namespace. Mã tôi sử dụng để có được điều này là:

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 dường như không vượt qua .. với 'null' Tôi vẫn nhận được không gian tên như trong ví dụ thứ hai .. làm thế nào để loại trừ NS này. .. nhờ sự giúp đỡ của bạn trước ..

$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

Trả lời

2

trong ví dụ của bạn, bạn đang tạo chỉ có một entry SOAPHeader (với không gian tên, nhưng tên 'null'). kết quả mong muốn của bạn có chứa hai mục tiêu đề riêng biệt (không gian tên), do đó bạn có thể thử:

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

Sau đó, bạn sẽ vượt qua mảng $headers cuộc gọi xà phòng (hoặc trực tiếp, hoặc trả trước qua __setSoapHeaders).

3

tôi cần một cái gì đó tương tự và đã có thể sử dụng một XSD_ANYXML SoapVar để đạt được điều này:

$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); 

Điều này dẫn đến:

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

Cảm ơn bạn !! Lưu ngày của tôi! –

Các vấn đề liên quan