需要建议连接到肥皂

时间:2013-07-15 03:22:32

标签: php soap ws-security

我需要为wsdl编写一个脚本。 wsdl和所有相关服务都是另一台服务器上的主机。计划使用的服务是检查/修改记录。

我计划使用PHP与服务器进行通信。

我遇到的问题是这是我第一次使用PHP编写soap客户端(我个人在PHP方面工作,但之前从未使用过soap ...)而且我在登录时遇到一些困难,它正在使用的wsse(使用Base64Binary)。 wsse的工作原理如何?我的意思是我需要编写一些代码来生成随机wsse代码吗?或者它是服务器端?

有人能给我指点方向还是有一些体面的教程?

感谢

<soapenv:Header>
<wsse:Security soapenv:mustUnderstand="1" xmlns:wsse="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-secext-1.0.xsd">
<wsse:UsernameToken wsu:Id="UsernameToken-1" xmlns:wsu="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-utility-1.0.xsd">
<wsse:Username>**USERNAME**</wsse:Username>
<wsse:Password Type="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-username-token-profile-1.0#PasswordText">**PASSWORD**</wsse:Password>
<wsse:Nonce EncodingType="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-soap-message-security-1.0#Base64Binary">**some letters and number I deleted**</wsse:Nonce>
<wsu:Created>2013-07-12T13:41:48.345Z</wsu:Created>
</wsse:UsernameToken>
</wsse:Security>
</soapenv:Header>
<soapenv:Body>

我遇到的问题是我不知道这些事情是如何运作的......


这是我最近的尝试。但我没有得到任何输出......我只是想知道是否有任何工具,我可以检查我的PHP连接?因为就目前而言,我不知道代码的哪一部分出了问题...有人可以帮我一把吗?

<?php
class WebServiceClient extends SoapClient
{
    public $username;
    public $password;


    public function __doRequest($request, $location)
    {
        $request =
  '<?xml version="1.0" encoding="utf-8"?>
  <soapenv:Envelope xmlns:dom="http://someurl" xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:v1="http://someurl">
<soapenv:Header>
<wsse:Security soapenv:mustUnderstand="1" xmlns:wsse="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-secext-1.0.xsd">
<wsse:UsernameToken wsu:Id="UsernameToken-1" xmlns:wsu="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-utility-1.0.xsd">
<wsse:Username>'.$this->username.'</wsse:Username>
<wsse:Password Type="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-username-token-profile-1.0#PasswordText">'.$this->password.'</wsse:Password>
<wsse:Nonce EncodingType="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-soap-message-security-1.0#Base64Binary">esdfewdfsd/sdfewresdfwdf</wsse:Nonce>
<wsu:Created>2013-07-12T13:41:48.345Z</wsu:Created>
</wsse:UsernameToken>
</wsse:Security>
</soapenv:Header>

</soapenv:Envelope>
        ';
        $location = "https://someurl/213?WSDL";
        return parent::__doRequest($request, $location);
    }
}

$client = new WebServiceClient("https://someurl/213?WSDL");
$client->username = "12345";
$client->password = "54321";
echo $client->__getLastRequest();
?> 

我编辑了wsse:Nonce和wsu:Created。

这里有一个问题,我是否必须使用他们给我的完全相同的代码集,否则我每次开始连接时都必须生成一个新的集合?

0 个答案:

没有答案