问题描述
我正在将网站与 SOAP API 集成。 但是当我需要像使用 SoapUI 一样发送空字符串(不是空值)时,我遇到了一个问题:
<soapenv:Body>
<urn:Datos_Articulo soapenv:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/">
<ID xsi:type="xsd:string"></ID>
<IP xsi:type="xsd:string">0</IP>
<CodS xsi:type="xsd:string">TA8094BK</CodS>
<Nombre_Carrito xsi:type="xsd:string">?</Nombre_Carrito>
<TablaSinTags xsi:type="xsd:boolean">?</TablaSinTags>
</urn:Datos_Articulo>
</soapenv:Body>
但是当这样做并使用 $client->__getLastRequest() 方法检查请求时,它总是发送:
<SOAP-ENV:Body>
<ns1:Datos_Articulo>
<ID xsi:type="xsd:string">Array</ID>
<IP xsi:nil="true"/>
<CodS xsi:nil="true"/>
<Nombre_Carrito xsi:nil="true"/>
<TablaSinTags xsi:nil="true"/>
</ns1:Datos_Articulo>
</SOAP-ENV:Body>
这是我的参数在发送之前的准备方式:
$params = array(
"ID" => "","CodS" => $code,"IP" => '0','TablaSinTags' => false
);
解决方法
解决了。 错误是在调用 __soapCall 方法时,我作为参数传递: array($params) 而不仅仅是 $params (因为 $params 已经是一个数组)。 我仔细检查了所需的参数:https://www.php.net/manual/es/soapclient.soapcall.php