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

使用Zeep构建Python SOAP客户端遇403禁止访问错误求助

解决Zeep SOAP客户端403 Forbidden (Forbidden port)错误

我来帮你分析下这个问题——你碰到的403错误明确标注了“Forbidden port”,这说明服务器端或者中间的网络防火墙禁止通过7104端口访问目标SOAP服务,和认证方式的关系不大,下面是几个具体的排查和解决方向:

1. 确认目标服务的端口正确性

首先先核实:你要访问的SOAP服务是不是确实监听在7104端口?有时候可能是端口号记错了,或者服务近期更换了端口。可以联系服务提供商、查看官方文档,或者用curl http://url:7104这类命令测试端口连通性,确认端口是否可用。

2. 排查网络防火墙/代理限制

  • 如果是在公司内网环境下,绝大多数企业防火墙会拦截非标准端口(7104不属于HTTP/80、HTTPS/443这类通用端口),这种情况你需要联系IT部门申请开通7104端口的访问权限。
  • 如果你使用了代理服务器,要确保代理配置允许转发7104端口的请求,同时要把代理信息正确配置到Zeep的Transport会话中:
    session = Session()
    session.proxies = {
        'http': 'http://your-proxy:port',
        'https': 'http://your-proxy:port',
    }
    session.auth = HTTPBasicAuth('usrname', 'pass')
    transport_with_basic_auth = Transport(session=session)
    

3. 尝试切换到标准端口(若可行)

如果服务提供商支持,询问是否可以使用80(HTTP)或443(HTTPS)这类标准端口访问服务,这些端口一般不会被防火墙拦截,能直接避开端口限制问题。

4. 修复本地WSDL文件的依赖引用

你在带认证的代码里使用了本地WSDL文件,但错误日志显示Zeep仍在访问http://url:7104,这说明本地WSDL文件中包含了指向远程7104端口的import语句,Zeep解析WSDL时会自动加载这些依赖的schema文件,从而触发端口错误。解决方法:

  • 把WSDL中所有import的远程地址替换成本地文件路径(比如把http://url:7104/schema.xsd改成file://C:/path/to/local/schema.xsd)
  • 确保所有依赖的schema文件都已经下载到本地,和WSDL文件放在同一目录或者路径正确引用

调整后的本地WSDL使用示例:

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

# 确保本地WSDL及所有依赖schema都已下载,且import路径为本地
client_location = "file://C:/full/path/to/your/local/service.wsdl"
session = Session()
session.auth = HTTPBasicAuth('usrname', 'pass')
transport_with_basic_auth = Transport(session=session)
client = Client(wsdl=client_location, transport=transport_with_basic_auth)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.27 07:26:08