折雨的天空

新浪微薄腾讯微薄

最新碎语:最近霉到了住。哎。。。

您的位置:折雨的天空 >php开发> PHP的soapheader问题

PHP的soapheader问题

PHP写的服务端,如果通过header验证需要注意一下

soapui工具里添加的header是放在$_SERVER数组中的。

而PHP的soapheader添加的,是放在soap原始请求中的,需要通过获取

MessageServer::soaputils_autoFindSoapRequest();
原始请求来取得。


部分服务端解析:


$username=isset($_SERVER['HTTP_USERNAME'])?$_SERVER['HTTP_USERNAME']:'';
                $token=isset($_SERVER['HTTP_TOKEN'])?$_SERVER['HTTP_TOKEN']:'';
                if($username=='' && $token=='')
                {
                    //从原始请求中匹配
                    $region_msg=MessageServer::soaputils_autoFindSoapRequest();
                    preg_match('~<username>([^<]*)</username>~Uis',$region_msg,$u);
                    $_SERVER['HTTP_USERNAME']=$username=isset($u[1])?$u[1]:'';
                    preg_match('~<token>([^<]*)</token>~Uis',$region_msg,$t);
                    $_SERVER['HTTP_TOKEN']=$token=isset($t[1])?$t[1]:'';
                }

PHP的客户端:


$client = new SoapClient('http://localhost/test.wsdl',array("trace"=>true,'soap_version' => SOAP_1_2));
                $authvalues = new SoapVar(array('username'=>'aaaa','token'=>$token),SOAP_ENC_OBJECT);
                $u = new SoapHeader('http://www.144d.com/','Authentication',$authvalues,false);
                //添加soapheader
                $client->__setSoapHeaders($u);
                
                $result =  $client->HIPMessageServer(array('action'=>"****", 'message'=>$xml));
                echo $client->__getLastResponse();

------------正 文 已 结 束, 感 谢 您 的 阅 读 (折雨的天空)--------------------

转载请注明本文标题和链接:《PHP的soapheader问题

奖励一下

取消

分享不易,烦请有多多打赏,如您也困难,点击右边关闭即可!

扫码支持
扫码打赏,5元,10元,你说多少就多少

打开支付宝扫一扫,即可进行扫码打赏哦

-秒后自动关闭,如已打赏,或者不愿打赏,请点击右上角关闭图标。

发表评论

路人甲 表情
看不清楚?点图切换