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

如何在Zeep中为参数value添加xsi:type="xsd:string"标签

解决Zeep调用SOAP接口时为参数添加xsi:type标记的问题

问题描述

调用PersonSearch接口时,需要将value参数用xsi:type="xsd:string"标签包裹,但当前直接传入字符串的方式无法生成该标记,导致SOAP请求不符合接口要求。

解决方案

在Zeep中,可以通过显式指定参数的XSD类型来实现需求,具体有两种可行方式:

方式1:使用zeep.xsd.XSDString直接包装参数

from zeep import xsd
# ... 保留原有代码结构

def find_by_login(self, login):
    # 初始化xsd:string类型对象
    string_type = xsd.XSDString()
    # 用该类型包装login值
    typed_value = string_type(login)
    return self.client.service.PersonSearch(
        self.session_id,
        fieldID='0de358e0',
        relation=0,
        value=typed_value
    )

方式2:通过客户端实例获取xsd:string类型包装

# ... 保留原有代码结构

def find_by_login(self, login):
    # 从客户端对象中获取xsd:string类型
    string_type = self.client.get_type('xsd:string')
    return self.client.service.PersonSearch(
        self.session_id,
        fieldID='0de358e0',
        relation=0,
        value=string_type(login)
    )

原理说明

Zeep默认会根据WSDL文档自动推断参数类型,但部分接口要求显式声明xsi:type属性。通过将参数值用对应的XSD类型对象包装,Zeep生成SOAP请求时会自动为该参数添加xsi:type="xsd:string"标记,满足接口的格式要求。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.26 04:43:14