我需要为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。
这里有一个问题,我是否必须使用他们给我的完全相同的代码集,否则我每次开始连接时都必须生成一个新的集合?