I am having a problem getting a custom soap header to work with PHP5. Can anybody guide me please.
What I require is something like this
<SOAP-ENV:Header>
<USER>myusername</USER>
<PASSWORD>mypassword</PASSWORD>
</SOAP-ENV:Header>
What I get is :
<SOAP-ENV:Header>
<ns2:null>
<USER>myusername</USER>
<PASSWORD>mypassword</PASSWORD>
</ns2:null>
</SOAP-ENV:Header>
I would like to remove the namespace tags. The code I use to get this is:
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 doesn't seem to pass.. with 'null' I still get name space as in second example.. how to exclude this NS... thanks for your help in advance..
$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
In your example, you are creating only one SoapHeader entry (with namespace, but named 'null'). Your desired result contains two separate header entries (without namespace), so you might try:
You'd then pass the
$headers
array to the soap call (either directly, or upfront via__setSoapHeaders
).I needed something similar and was able to use an XSD_ANYXML SoapVar to achieve this:
This resulted in: