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

Zeep Python SOAP Client传递空参数失败问题求助

解决Zeep调用SOAP接口时无法生成空元素节点的问题

你遇到的核心问题是Zeep生成的SOAP请求格式和Postman的不匹配——接口要求jobCardNumber和jobcards必须存在空的元素节点,但你之前用的两种方法都不符合要求:

  • xsd.SkipValue会让Zeep完全省略该节点,而接口明确需要这个节点存在;
  • Nil会生成带xsi:nil="true"属性的节点,这和Postman里<jobCardNumber></jobCardNumber>这种纯空元素的格式不一致。

下面是能精准复现Postman请求的正确写法:

正确实现代码

from zeep import Client

# 初始化Zeep客户端(替换成你的实际WSDL地址)
client = Client("http://your-soap-server-url?wsdl")

# 获取ArrayOfJobCardsEnt类型,用于构造空的数组实例
array_of_job_cards_type = client.get_type("ns0:ArrayOfJobCardsEnt")

# 构造符合接口要求的请求参数
request_data = {
    "key": "some_valid_key",
    "technicianID": "some_technician_id",
    "jobCardNumber": "",  # 空字符串对应Postman里的<jobCardNumber></jobCardNumber>
    "jobcards": array_of_job_cards_type(),  # 空数组实例生成<jobcards></jobcards>
    "message": ""
}

# 调用接口并处理响应
try:
    response_body = client.service.GetJobCards(**request_data)
    print("请求成功:", response_body)
except Exception as e:
    print("请求失败:", str(e))

调试验证技巧

如果还是出现问题,可以开启Zeep的调试日志,对比生成的SOAP请求和Postman的差异:

import logging
logging.basicConfig(level=logging.DEBUG)

日志会输出Zeep发送的完整XML内容,你可以直接和Postman的请求做对比,确认节点格式是否完全一致。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.14 08:57:37