我需要对Web服务进行SOAP调用,但似乎无法正确获取数据结构。我已经尝试了一切,但是似乎没有什么是正确的。
我需要在PHP中重建以下结构:
<StartWorkflowAndGetResultRequest xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
<ID_Workflowdefinition xmlns="http://innosolv.ch/webservices/">4003</ID_Workflowdefinition>
<WorkflowParameterValues xmlns="http://innosolv.ch/webservices/">
<WorkflowParameterValue>
<ParameterName>ID_Subjekt</ParameterName>
<ParameterValue>'.$_SESSION["login-user"].'</ParameterValue>
</WorkflowParameterValue>
</WorkflowParameterValues>
<EntityId xsi:nil="true" xmlns="http://innosolv.ch/webservices/" />
<EntityId2 xsi:nil="true" xmlns="http://innosolv.ch/webservices/" />
<KommunikationTemplates xmlns="http://innosolv.ch/webservices/">
<KommunikationTemplate Identification="3ecc6ab0-f5f7-41d5-b4a6-eea9c7f019f2">
<Nummer xmlns="Kommunikation_PQ">+41 71 888 88 88</Nummer>
<ID_Kommunikation xmlns="Kommunikation_PQ">4068</ID_Kommunikation>
</KommunikationTemplate>
</KommunikationTemplates>
<ResultFieldNames xmlns="http://innosolv.ch/webservices/">
<string>Success</string>
<string>ErrorMessage</string>
</ResultFieldNames>
</StartWorkflowAndGetResultRequest>
我的尝试
$params = array(
"ID_Workflowdefinition" => 4003,
"WorkflowParameterValues" => array(
array(
"ParameterName" => "ID_Subjekt",
"ParameterValue" => $_SESSION["login-user"]
)
),
"EntityId" => null,
"EntityId2" => null,
"KommunikationTemplates" => array(
array(
"Nummer" => $phone,
"ID_Kommunikation" => 4068
)
),
"ResultFieldNames" => array(
"Success",
"Failure"
)
);
这是我从网络服务获得的错误响应:
<b>Fatal error</b>: Uncaught SoapFault exception: [s:Client] Der Objektverweis wurde nicht auf eine Objektinstanz festgelegt.<br/>
答案 0 :(得分:0)
有多种使用SoapClient创建请求的方法,其中一种是使用classmap选项。 official documentation中没有记录,但是您可以在注释中找到一些示例。
如果您的服务具有WSDL,则有一个wsdlToPhp库,该库可生成Web服务wsld中所需的所有类,实体和示例。