PHP Soap复杂数据类型?

PHP Soap复杂数据类型?,php,web-services,soap,Php,Web Services,Soap,我试图使用一个PHP Soap服务,但是我似乎在复杂/抽象类型方面遇到了问题 这是使用SOAP UI生成的SOAP调用:- <soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:lin="http://llu.webservices.opalonline.co.uk/LineCharacteristicsWS"> <soapenv:Header/>

我试图使用一个PHP Soap服务,但是我似乎在复杂/抽象类型方面遇到了问题

这是使用SOAP UI生成的SOAP调用:-

 <soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:lin="http://llu.webservices.opalonline.co.uk/LineCharacteristicsWS">
   <soapenv:Header/>
   <soapenv:Body>
      <lin:GetLineCharacteristics>
         <lin:request>
            <!--Optional:-->
            <lin:UserCredentials>
               <!--Optional:-->

               <!--Optional:-->
               <lin:Username>testUser</lin:Username>
               <lin:Password>testPass</lin:Password><lin:AgentID>1234</lin:AgentID>
            </lin:UserCredentials>
            <lin:RequestDetails xsi:type="lin:TelephoneNumberRequest" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
                <lin:TelephoneNumber>123456789</lin:TelephoneNumber>
            </lin:RequestDetails>
            <lin:UserConsent>Yes</lin:UserConsent>
            <lin:ServiceType>MPF</lin:ServiceType>
         </lin:request>
      </lin:GetLineCharacteristics>
   </soapenv:Body>
</soapenv:Envelope>
运行代码时,会生成以下错误:-

致命错误:未捕获的SoapFault异常:[soap:客户端]服务器无法读取请求。-->XML文档(2382)中存在错误。-->指定的类型是抽象的:name='RequestType',namespace='',位于http://llu.webservices.opalonline.co.uk/LineCharacteristicsWS'>. 在/Users/jamesormerod/NetBeansProjects/fpdfDev/TestClass.php中:23


有人能帮忙吗?

要发送格式正确、类型和名称空间正确的请求,必须同时使用名为必需元素的类和将元素映射到类的类映射。 该项目可以帮助您生成类和类映射。您可以在上使用该项目

例如,如果生成名为
LineCharacteristics
的包,则可以使用以下示例代码发送请求:

$lineCharacteristicsServiceGet=新的lineCharacteristicsServiceGet();
//LineCharacteristicsServiceGet::GetLineCharacteristics()的示例调用
$details=newlinecharacteristicstructtelephonenumberrequest(“+33631363636”);
$request=newlineCharacteristicsStructGetLineCharacteristicsRequest($details,lineCharacteristicsEnumUserApprovementEnum::VALUE_YES,LineCharacteristicsEnumServiceTypeEnum::VALUE_MPF);
$userCredentials=新的线条特征结构特征(11111、*******、*******);
$request->setUserCredentials($userCredentials);
$characteristics=新的LineCharacteristicsStructGetLineCharacteristics($request);
$r=$lineCharacteristicsServiceGet->GetLineCharacteristics($characteristics);
echo内爆(“\r\n”,数组($lineCharacteristicsServiceGet->getLastRequestHeaders(),$lineCharacteristicsServiceGet->getLastRequest(),$lineCharacteristicsServiceGet->getLastResponse(),$lineCharacteristicsServiceGet->getLastResponse());
如果($r)
打印($lineCharacteristicsServiceGet->getResult());
其他的

打印($lineCharacteristicsServiceGet->getLastError())

试试
$request->TelephoneNumberRequest->TelephoneNumber
不,我相信它需要某种类映射?
$call = new StdClass();

$call->request =  new StdClass();
$call->request->UserConsent = "Yes";
$call->request->ServiceType = "MPF";

$call->request->UserCredentials =  new StdClass();
$call->request->UserCredentials->Username="testUser";
$call->request->UserCredentials->Password="testPass";
$call->request->UserCredentials->AgentID=1234;


$call->request->RequestDetails = new StdClass();
$call->request->RequestDetails->TelephoneNumber = "123456789";

$url = "https://llu.webservices.opalonline.co.uk/LineCharacteristicsWSV6/LineCharacteristicsWS.asmx?wsdl";
$client = new SoapClient($url, array('trace' => 1, exceptions=> 1,'soap_version' => SOAP_1_1));

$result = $client->GetLineCharacteristics($call);

echo $client->__getLastRequest();
echo $client->__getLastResponse();