PHP   发布时间:2022-04-04  发布网站:大佬教程  code.js-code.com
大佬教程收集整理的这篇文章主要介绍了PHP-如何创建像这样的肥皂头?大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。

对第三方应用程序进行一些SOAP调用.他们提供此soap标头作为应用程序期望值的示例.如何在PHP中创建像这样的SOAP标头?

<SOAP-ENV:Header>
    <NS1:Security xsi:type="NS2:Security" xmlns:NS1="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-secext-1.0.xsd" xmlns:NS2="urn:dkWSValueObjects">
        <NS2:UsernameToken xsi:type="NS2:TUsernameToken">
            <Username xsi:type="xsd:string">XXXX</Username> 
            <password xsi:type="xsd:string">XXX</password> 
        </NS2:UsernameToken>
    </NS1:Security>
</SOAP-ENV:Header>

我做我认为是正确的电话,并不断获得回报,没有头发送.

这是我的代码示例.

class SOAPStruct 
{
    function __construct($user, $pass) 
    {
        $this->Username = $user;
        $this->password = $pass;
    }
}

$client = new SoapClient("http://www.example.com/service");

$auth = new SOAPStruct("username", "password");
$header = new SoapHeader("http://example.com/service", "TUsernameToken", $auth);

$client->__setSoapHeaders(array($header));
$client->__soapCall("GetSubscriptionGroupTypes", array(), NULL, $header)

这是我返回的SOAP标头. (更多,但我剥夺了可能很敏感的信息)

<SOAP-ENV:Header>
    <ns2:TUsernameToken>
        <Username>username</Username> 
        <password>password</password> 
    </ns2:TUsernameToken>
</SOAP-ENV:Header>

解决方法:

PHP中的SOAP标头处理实际上不是很灵活,我甚至可以说,尤其是在标头中使用两个名称空间将使得无法仅通过使用某种类型的SoapHeader-construct注入标头.

我认为处理此问题的最佳方法是通过在扩展SoapClient的自定义类中重写SoapClient :: __ dorequest()来自己塑造XML请求.

class My_SoapClient extends SoapClient
{
    public function __dorequest($request, $LOCATIOn, $action, $version, $one_way = 0)
    {
        $xmlrequest = new DOMDocument('1.0');
        $xmlrequest->loadXML($request);

        /*
         * Do your processing using DOM 
         * e.g. insert security header and so on
         */

        $request = $xmlrequest->saveXML();
        return parent::__dorequest($request, $LOCATIOn, $action, $version, $one_way);
    }
}

请参阅SoapClient::__doRequest了解更多信息和一些示例.

大佬总结

以上是大佬教程为你收集整理的PHP-如何创建像这样的肥皂头?全部内容,希望文章能够帮你解决PHP-如何创建像这样的肥皂头?所遇到的程序开发问题。

如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。
标签: