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

Zeep调用SOAP服务报错:waybill()收到意外参数WAYBILL

解决SOAP调用的TypeError问题

你遇到的TypeError是因为zeep根据WSDL生成的waybill类型接口,不需要传入WAYBILL这个关键字参数,而是直接传入对应的数据结构;另外你的字典键名是小写,和原始XML里的大写字段不匹配,这也会导致服务端解析异常。

修改后的代码如下:

soap_client = zeep.Client(wsdl=WAYBILL_SERVICE_URL)
# 调整键名为XML里的大写形式,匹配SOAP服务端的字段要求
waybill_data = {
    "TYPE": 2,
    "GOODS_LIST": [
        {
            "W_NAME": "test",
            "W_ID": 2
        }
    ],
    "TRANS_ID": 1
}
# waybill参数直接传入调整后的字典,不需要套WAYBILL外层
soap_client.service.save_waybill(
    su=service_user.username,
    sp=service_user.password,
    waybill=waybill_data
)

补充说明:

  • 原始XML中<waybill>节点内部直接包含<WAYBILL>结构,zeep会自动处理节点的嵌套逻辑,所以你只需要把<WAYBILL>里的字段组织成字典传入waybill参数即可,不需要额外包裹{"WAYBILL": ...}。
  • SOAP服务端通常对字段大小写敏感,必须和XML请求里的字段名(比如TYPE、W_NAME)完全一致,不能用小写的type、w_name。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.04 06:25:29