PHP调用有SoapHeader认证的WebService实例
这两天用php调用.NET的WebService总是出现这样那样的问题,问题主要出在SoapHeader认证的环节上。因此这里总结下,避免下次出现同样的情况。
这里主要讨论下php调用WebService的情况,Server端就默认已经存在了。
首先看无SoapHeader认证的情况:
try{
$client = new
SoapClient('http://w15.abc.com/SmsWebService.asmx?wsdl');
$result = $client->addSendSms($paramArr);
$result = simplexml_load_string($result->addSendSmsResult);
$state = $result->smsstate;
}catch (SoapFault $fault){}
echo $state;
说明: 这里只要将$paramArr以数组的形式封装传递给addsendsms方法即可正常调用。
再看看有header验证的情况吧,这里就直接贴正常的代码了。里面有详细的说明
header('Content-Type: text/html; charset=utf-8');
$s = new
SoapClient('http://w1.abc.com/SmsWebService.asmx?wsdl');
$u = new
SoapHeader(http://tempuri.org/','MySoapHeader',array('UserName'=>'admin','PassWord'=>'123456'),true);
//添加soapheader
$s->__setSoapHeaders($u);
//调取需要的webservice方法
$suc = $s->GetStockCode(array('SendType'=>'s05'));
echo $suc->GetStockCodeResult;