You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

PHP调用SOAP接口的GETcotpaq_方法如何正确传递参数?

错误原因

你遇到的Array to string conversion报错核心有两个原因:

  1. PHP SOAP扩展无法直接将原生数组转为接口要求的EstCga_复杂类型参数
  2. 你编写的参数列表遗漏了方法签名里的第二个参数$sCte_,参数数量和顺序不匹配也会触发解析错误

解决方法

方案1:按方法签名的参数顺序逐个传参(兼容性最好)

首先构造EstCga_类型的对象,再按顺序传入所有参数:

// 构造复杂类型EstCga_的参数
$sDatDet = new stdClass();
$sDatDet->xCntEmp_ = 1;
$sDatDet->xPesUni_ = 10;
$sDatDet->xVolUni_ = 10;

// 按方法签名的参数顺序传入,注意不要遗漏第二个参数$sCte_,请替换为实际业务值
$response = $client->GETcotpaq_(
    'FA', // sCid_
    '替换为实际的$sCte_业务值', // 你之前的代码漏了这个必填参数
    '44250', // sCor_
    '37000', // sCds_
    '0', // xRec_ 方法签名要求为string类型,显式转字符串
    '0', // xEnt_ 同上转字符串
    100, // xVld_
    $sDatDet // sDatDet_
);

var_dump($response);

方案2:用关联数组+SoapVar封装复杂类型传参

如果你习惯用关联数组传参,可以用__soapCall方法调用,同时用SoapVar指定复杂类型:

$params = [
    'sCid_' => 'FA',
    'sCte_' => '替换为实际的$sCte_业务值', // 必须补全缺失的参数
    'sCor_' => '44250',
    'sCds_' => '37000',
    'xRec_' => '0',
    'xEnt_' => '0',
    'xVld_' => 100,
    'sDatDet_' => new SoapVar(
        [
            'xCntEmp_' => 1,
            'xPesUni_' => 10,
            'xVolUni_' => 10
        ],
        SOAP_ENC_OBJECT,
        'EstCga_' // 显式指定对应的SOAP复杂类型名
    )
];

// 通过__soapCall方法调用
$response = $client->__soapCall('GETcotpaq_', $params);
var_dump($response);

内容的提问来源于stack exchange,提问作者cheemsboy

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.04 06:00:00