我正在尝试使用此结构获取请求:
<SOAP-ENV:Body>
<ns1:getCreditReportTypes>
<reportTypeRequest>
<reportParams xsi:type="ns1:personCreditReportParams">
<personId>4</personId>
<consentConfirmed>true</consentConfirmed>
</reportParams>
</reportTypeRequest>
</ns1:getCreditReportTypes>
</SOAP-ENV:Body>
这是我的php代码:
$obj = new \stdClass();
$obj->personId = 4;
$obj->consentConfirmed = true;
$data = new \SoapVar($obj, SOAP_ENC_OBJECT, "personCreditReportParams", $namespace, "reportParams");
$res = $this->client->getCreditReportTypes(new \SoapParam($data,"reportTypeRequest"));
但是,php会生成无效的xml:
<SOAP-ENV:Body>
<ns1:getCreditReportTypes xsi:type="ns1:personCreditReportParams">
<consentConfirmed>true</consentConfirmed>
<personId>4</personId>
</ns1:getCreditReportTypes>
</SOAP-ENV:Body>
如何使用object-way创建有效的XML?
答案 0 :(得分:1)
对于那些会遇到同样问题的人。 我的解决方案是使用nusoap(https://github.com/yaim/nusoap-php7)。此库允许您发出复杂的请求,包括SWA(SOAP with Attachments)。 这是我的问题的工作代码:
$person = array("personId"=>$id, "consentConfirmed"=>$confirmed);
$data = array(
"reportParams"=>new soapval("reportParams", "personCreditReportParams", $person, false, $namespace)
);
$result = $client->call("getCreditReportTypes", $data, $namespace);
P.S。我已经尝试了一些生成器,没有人可以提出正确的请求,尽管正确生成了类。
答案 1 :(得分:0)
你应该明确地使用WSDL到php生成器,例如PackageGenerator。
它可以让您轻松完成请求构建和响应处理。