如何解决赛门铁克消息网关添加域soap请求
我正在尝试在 PHP 中生成以下 XML 块以将其发送到 SMG soap 服务器。我该怎么做?
<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:dom="http://schemas.symantec.com/jaxws/domainProvisioningService">
<soapenv:Header/>
<soapenv:Body>
<dom:AddDomains>
<dom:domains>
<domain name="domain1.com" local="true">
</domain>
<domain name="domain2.com" local="true">
</domain>
</dom:domains>
</dom:AddDomains>
</soapenv:Body>
</soapenv:Envelope>
解决方法
所以 #1 我讨厌用肥皂工作。也就是说,我建议使用 SoapClient (https://www.php.net/manual/en/book.soap.php)。
您首先实例化一个客户端,然后像这样传入 wsdl:
$client = new SoapClient("some.wsdl",array('trace' => 1));
创建soap服务的人会告诉你wsdl在哪里。
现在您可以执行以下操作:
$result = $client->AddDomains(
array(
array('name'=>'domain1.com','local'=>'true'),array('name'=>'domain2.com','local'=>'true')
)
);
但这可能不起作用,因为 WSDL 可能需要一些特定的古怪格式或其他东西。您需要检查响应是否不是肥皂错误
if (is_soap_fault($result)) {
echo "REQUEST:\n" . $SOAP->__getLastRequest() . "\n";
echo "SOAP Fault: (faultcode: {$result->faultcode},faultstring: {$result->faultstring}";
}
这有望让您走上正轨。
,我执行了以下 php 块并创建了所需的输出:
$xmldom = new DOMDocument();
$domainsAttr = $xmldom->createElement( "domains" );
$domainAttr = $xmldom->createElement( "domain" );
$domainAttr->setAttribute( "name","test.com" );
$domainAttr->setAttribute( "local","true" );
$domainsAttr->appendChild( $domainAttr );
$xmldom->appendChild( $domainsAttr );
这是所需的输出:
<domains><domain name="test.com" local="true"/></domains>
我省略了在此处发布的剩余代码,但是当我执行代码时,出现以下错误:
Cannot find dispatch method for {}domains
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。