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

Python如何调用带身份验证与指定endpoint的WSDL接口服务

Python调用指定Endpoint的WSDL接口解决方案

问题根因

当前你已经完成WSDL文件的鉴权拉取,接口调用失败的核心原因是没有显式绑定业务endpoint地址,同时调用方法时需要匹配WSDL定义的入参格式。

推荐Zeep实现方案(suds已停止维护)

完整可运行代码如下:

import requests
from requests.auth import HTTPBasicAuth 
from requests import Session
from zeep import Client
from zeep.transports import Transport

# 配置参数
WSDL_URL = "https://sigaf.hacienda.go.cr/sap/bc/srt/wsdl/flv_10002A111AD1/bndg_url/sap/bc/srt/rfc/sap/zfmg_reports/500/zfmg_reports/binding?sap-client=500"
USERNAME = 'Ws_cgr' 
PASSWORD = 'Claves+2021'
TARGET_ENDPOINT = 'https://sigaf.hacienda.go.cr/sap/bc/srt/rfc/sap/zfmg_reports/500/zfmg_reports/binding'

# 初始化带鉴权的请求会话
session = Session()
session.auth = HTTPBasicAuth(USERNAME, PASSWORD)
# 如遇SSL证书报错可临时加下行关闭验证,生产环境建议导入官方根证书
# session.verify = False

# 初始化WSDL客户端
client = Client(WSDL_URL, transport=Transport(session=session))

# 核心步骤:绑定自定义业务endpoint
# 注:如提示binding不存在,可执行print(client.wsdl.bindings)输出所有可用binding键名,替换下行第一个参数
service = client.create_service(
    '{urn:sap-com:document:sap:soap:functions:mc-style}binding',
    TARGET_ENDPOINT
)

# ---------------------- 方法调用示例 ----------------------
# 1. 先打印方法入参结构,确认字段要求
print("ZwsYMhd76000042方法入参结构:", client.get_type('ZwsYMhd76000042'))
# 2. 传入对应参数调用方法
response = service.ZwsYMhd76000042(
    # 按入参结构填入对应参数,示例:I_BUKRS='1000', I_DATE='20240101'
)
print("接口返回结果:", response)

# 其余两个方法调用逻辑一致
# print("ZwsZfmMensual方法入参结构:", client.get_type('ZwsZfmMensual'))
# response1 = service.ZwsZfmMensual(对应参数)
# print("ZwsZinforme37Newm方法入参结构:", client.get_type('ZwsZinforme37Newm'))
# response2 = service.ZwsZinforme37Newm(对应参数)

Suds兼容实现方案

如果需要继续使用suds库,使用如下代码配置endpoint:

from suds.client import Client

WSDL_URL = "https://sigaf.hacienda.go.cr/sap/bc/srt/wsdl/flv_10002A111AD1/bndg_url/sap/bc/srt/rfc/sap/zfmg_reports/500/zfmg_reports/binding?sap-client=500"
USERNAME = 'Ws_cgr' 
PASSWORD = 'Claves+2021'
TARGET_ENDPOINT = 'https://sigaf.hacienda.go.cr/sap/bc/srt/rfc/sap/zfmg_reports/500/zfmg_reports/binding'

# 初始化客户端
client = Client(WSDL_URL, username=USERNAME, password=PASSWORD)
# 核心步骤:设置业务endpoint
client.set_options(location=TARGET_ENDPOINT)

# 调用方法示例
response = client.service.ZwsYMhd76000042(对应参数)
print(response)

调试建议

  • 调用方法前先打印入参结构,严格匹配字段名和数据类型,SAP接口通常要求参数为字符串格式的数字、日期
  • 如返回权限类错误,确认账号是否开通了三个方法的调用权限
  • 网络问题可先通过Postman等工具调用接口验证连通性,再同步到Python代码中

内容的提问来源于stack exchange,提问作者Oscar CENTENO MORA

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.24 09:54:03