首页 > 解决方案 > 使用 SoapClient 发送空字符串

问题描述

我正在将网站与 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

);

标签: soapsoapuisoap-client

解决方案


解决了。错误是在调用 __soapCall 方法时,我作为参数传递: array($params) 而不是仅 $params (因为 $params 已经是一个数组)。我仔细检查了所需的参数:https ://www.php.net/manual/es/soapclient.soapcall.php


推荐阅读