使用PHP SOAPClient获取XML响应

使用PHP SOAPClient获取XML响应,php,soap,Php,Soap,我正在尝试使用php本机SoapClient函数复制此结构 $client = new SoapClient('my.wsdl', ['trace'=>1, 'cache_wsdl' => WSDL_CACHE_NONE]); $client->MethodToCall($params); var_dump($client->__getLastRequest()); 这是预期的xml请求: <soapenv:Envelope xmlns:soapenv="http

我正在尝试使用php本机SoapClient函数复制此结构

$client = new SoapClient('my.wsdl', ['trace'=>1, 'cache_wsdl' => WSDL_CACHE_NONE]);
$client->MethodToCall($params);
var_dump($client->__getLastRequest());
这是预期的xml请求:

<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/"> 
    <soapenv:Header/> 
    <soapenv:Body> 
        <MethodToCall> 
            <MethodToCallRQ> 
                <RqHeader HostID="123456" Xtoken="TOKEN123456" Interface="WEB" UserName="WEB"/> 
                <SearchType>NAME</SearchType> 
                <RecordCode/> 
                <Name>MARIO</Name> 
            </MethodToCallRQ> 
        </MethodToCall>
    </soapenv:Body> 
</soapenv:Envelope>
$request的转储是:

object MethodToCall (1) {
    protected MethodToCallRQ -> object MethodToCallRQ (10) {
        protected SearchType -> string (4) "NAME"
        protected RecordCode -> NULL
        protected Name -> string (7) "Stefano"
        protected Surname -> NULL
        protected VatCode -> NULL
        protected ZipCode -> NULL
        protected City -> NULL
        protected CountyCode -> NULL
        protected CategoryCode -> NULL
        protected RqHeader -> object RequestHeader (5) {
            protected HostID -> string (6) "123456"
            protected Xtoken -> string (11) "TOKEN123456"
            protected Interface -> string (3) "WEB"
            protected UserName -> string (3) "WEB"
        }
    }
}
生成的xml是:

<?xml version="1.0" encoding="UTF-8"?>
<SOAP-ENV:Envelope xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/">
    <SOAP-ENV:Body>
        <parameters>
            <MethodToCallRQ>
                <SearchType>NAME</SearchType>
                <RecordCode/>
                <Name>Stefano</Name>
                <Surname/>
                <VatCode/>
                <ZipCode/>
                <City/>
                <CountyCode/>
                <CategoryCode/>
                <RqHeader>
                    <HostID>123456</HostID>
                    <Xtoken>TOKEN123456</Xtoken>
                    <Interface>WEB</Interface>
                    <UserName>WEB</UserName>
                </RqHeader>
            </MethodToCallRQ>
        </parameters>
    </SOAP-ENV:Body>
</SOAP-ENV:Envelope>
为什么要贴标签

<parameters> 
而不是

<MethodToCall> 

拥有WSDL可能有助于了解预期的请求以及它不起作用的原因


你试过使用吗?然后让我知道

这是预期的xml请求-实际请求是什么?我不确定实际请求是否有用,我在我的示例中尝试了许多$parameters组合,我只是为了清楚起见才报告了它,但我无法在正文中重现xml。
<MethodToCall>