微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

赛门铁克消息网关添加域soap请求

如何解决赛门铁克消息网关添加域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 举报,一经查实,本站将立刻删除。