如何构建正确的数据结构以进行 SOAP 调用?
How to build the right data structure in order to do a SOAP call?
我需要对网络服务进行 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/>
有多种方法可以使用 SoapClient 创建请求,其中之一是使用类映射选项。 official documentation 中没有记录,但您可以在评论中找到一些示例。
如果您的服务有 WSDL,则可以使用 wsdlToPhp 库从 Web 服务 wsld 生成您需要的所有 类、实体和示例。
我需要对网络服务进行 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/>
有多种方法可以使用 SoapClient 创建请求,其中之一是使用类映射选项。 official documentation 中没有记录,但您可以在评论中找到一些示例。
如果您的服务有 WSDL,则可以使用 wsdlToPhp 库从 Web 服务 wsld 生成您需要的所有 类、实体和示例。