我正在尝试在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>发布于 2021-02-20 05:39:10
所以#1我讨厌使用soap。也就是说,我推荐使用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可能需要一些特定的奇怪的格式或其他东西。您需要检查响应是否不是soapfault
if (is_soap_fault($result)) {
echo "REQUEST:\n" . $SOAP->__getLastRequest() . "\n";
echo "SOAP Fault: (faultcode: {$result->faultcode}, faultstring: {$result->faultstring}";
}希望这能让你走上正轨。
发布于 2021-02-20 14:38:15
我执行了以下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 {}domainshttps://stackoverflow.com/questions/66284507
复制相似问题