2010-03-26 12 views
6

मुझे PHP5 के साथ काम करने के लिए एक कस्टम साबुन शीर्षलेख प्राप्त करने में समस्या हो रही है। क्या कोई मुझे कृपया मार्गदर्शन कर सकता है।PHP साबुन फ़ंक्शंस का उपयोग कर कस्टम हेडर

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

मैं नाम स्थान टैग हटाना चाहते हैं:

क्या मैं की आवश्यकता होती है इस

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

की तरह कुछ मैं क्या मिलता है। कोड मैं इस प्राप्त करने के लिए उपयोग करते हैं:

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

अशक्त पारित करने के लिए .. 'अशक्त' के साथ मैं अब भी दूसरे उदाहरण में दिखाया नाम स्थान मिलता है प्रतीत नहीं होता है .. इस एन एस बहिष्कृत करने का तरीका। .. अग्रिम में आपकी मदद के लिए धन्यवाद ..

$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

उत्तर

2

अपने उदाहरण में, आप केवल एक ही SoapHeader प्रविष्टि पैदा कर रहे (नाम स्थान के साथ है, लेकिन नाम 'अशक्त')। आपका वांछित परिणाम दो अलग-अलग हैडर प्रविष्टियों (नाम स्थान के बिना) शामिल हैं, तो आप कोशिश कर सकते हैं:

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

फिर आप साबुन कॉल करने के लिए $headers सरणी दे देते हैं (या तो सीधे या __setSoapHeaders के माध्यम से अग्रिम)।

3

मैं कुछ इसी तरह की जरूरत है और इस लक्ष्य को हासिल करने के लिए एक XSD_ANYXML SoapVar का उपयोग करने में सक्षम था:

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

इस के परिणामस्वरूप:

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

धन्यवाद !! मेरा दिन बचाया! –

संबंधित मुद्दे