【问题标题】:How to set SOAP header on PHP to authenticate a web service?如何在 PHP 上设置 SOAP 标头以验证 Web 服务?
【发布时间】:2013-09-19 09:25:19
【问题描述】:

我需要将 SOAP 标头设置为这种格式:

<soapenv:Header>
    <wsse:Security xmlns:wsse="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-secext-1.0.xsd" xmlns:wsu="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-utility-1.0.xsd">
        <wsse:UsernameToken wsu:Id="UsernameToken-45">
            <wsse:Username>XXXXX</wsse:Username>
            <wsse:Password Type="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-username-token-profile-1.0#PasswordText">XXXXXXX</wsse:Password>
            <wsse:Nonce EncodingType="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-soap-message-security-1.0#Base64Binary">OxWtCYYj1cX7HiZeMEqorw==</wsse:Nonce>
            <wsu:Created>2013-09-18T07:25:50.227Z</wsu:Created>
        </wsse:UsernameToken>
    </wsse:Security>
</soapenv:Header>

我已尝试使用以下代码验证 Web 服务,但没有成功。

$momurl = "https://integrationdev.momentum.co.za/sales/CRMService/CRMLeadService_v1_0/";

$client = new SoapClient(
    "$momurl",
    array(
        'trace' => 1,
        'login' => $username,
        'password' => $password
    )
);

任何帮助将不胜感激。提前致谢。

【问题讨论】:

    标签: php web-services soap wsdl ws-security


    【解决方案1】:

    您需要使用SoapClient::__setSoapHeader()。像这样:

    $security = array(
        'Username'=>'XXXXX',
        'Password'=>'XXXXX',
        'Nonc'=> 'OxWtCYYj1cX7HiZeMEqorw==',
        'Created' => '2013-09-18T07:25:50.227Z',
        'UsernameToken' => NULL
    );
    
    $header = new SoapHeader('wsse','Security',$security, false);
    $client->__setSoapHeaders($header);
    

    【讨论】:

    • 感谢您的回复。对不起,我对 SOAP 不是很熟悉。嗯...我应该如何实现 SoapClient::__setSoapHeader() ?我应该把这个放在哪里?
    • 放在构造器下面
    • 好的,这用于发送请求/连接到网络服务。 Web 服务端点是 $momurl,它应该通过 $params 变量传递一些数据。你知道如何执行请求吗?谢谢
    • 我已经得到了问题:) 把我给你的代码放在构造函数下面
    • 你这是什么意思?对不起,我有点迷路了,因为我对这些东西不熟悉。 :)
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-03-01
    • 2013-01-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多