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验证的情况吧,这里就直接贴正常的代码了。里面有详细的说明

<? php
header ( ' Content-Type: text/html; charset=utf-8 ' );

$s   =   new  SoapClient( ' http://w1.abc.com/SmsWebService.asmx?wsdl ' );
/*
 *SoapHeader参数说明如下所示:
 *'http://tempuri.org/'   namespace(命名空间可省略)
 *'MySoapHeader'          SoapHeader头的类名
 *'array(...)'            存放标识身份的字符串参数
 *'true'                  是否必须处理该header
*/
$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;

 

其中标红的位置注意一下,参数对应理解清楚。取数据问题也就不大了。。。

 

转载于:https://www.cnblogs.com/zzxbest/archive/2011/09/20/2182606.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值