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

使用Python Zeep调用WebService遇415错误,如何查看SOAP请求内容?

解决Zeep调用WebService的415错误并查看SOAP请求内容

这个415 Unsupported Media Type错误大概率是请求的Content-Type不符合服务端要求,或者SOAP信封的格式有问题。要排查这个问题,你可以通过以下几种方式查看实际发送的SOAP请求细节:

1. 改进自定义Logging Plugin打印请求内容

你已经写了MyLoggingPlugin,可以直接在egress方法里添加打印逻辑,把HTTP头和SOAP信封内容输出出来:

class MyLoggingPlugin(Plugin):
    def ingress(self, envelope, http_headers, operation):
        return envelope, http_headers
    def egress(self, envelope, http_headers, operation, binding_options):
        http_headers['Content-Type'] = 'text/xml; charset=utf-8'  # 去掉末尾多余的分号试试
        # 打印HTTP请求头
        print("=== 发送的HTTP请求头 ===")
        for key, value in http_headers.items():
            print(f"{key}: {value}")
        # 打印SOAP请求体(转成字符串方便阅读)
        print("\n=== 发送的SOAP请求体 ===")
        print(envelope.decode('utf-8'))
        return envelope, http_headers

注意:envelope是bytes类型,需要用decode('utf-8')转成字符串才能正常显示XML内容。另外你原来的Content-Type末尾多了个分号,有些严格的服务器可能会识别异常,建议去掉。

2. 开启Zeep内置的DEBUG日志

Zeep本身提供了详细的日志输出,只需要配置日志级别为DEBUG就能看到完整的请求和响应细节:

import logging

# 全局配置日志级别
logging.basicConfig(level=logging.DEBUG)
# 单独设置Zeep的日志级别为DEBUG
zeep_logger = logging.getLogger('zeep')
zeep_logger.setLevel(logging.DEBUG)

运行代码后,控制台会输出包括请求URL、HTTP方法、所有请求头、SOAP请求体,以及服务端返回的响应内容,非常适合排查问题。

3. 给Requests Session添加请求钩子

因为Zeep底层使用Requests库发送HTTP请求,你可以给Session添加一个请求钩子,捕获每一个发送的请求:

def log_request_details(request):
    print("\n=== 请求详情 ===")
    print(f"URL: {request.url}")
    print(f"方法: {request.method}")
    print("请求头:")
    for key, value in request.headers.items():
        print(f"  {key}: {value}")
    if request.body:
        print("\n请求体:")
        print(request.body.decode('utf-8'))
    return request

# 给session添加请求钩子
session.hooks['request'].append(log_request_details)

把这段代码放在创建session对象之后,每次Zeep发送请求时都会自动触发这个钩子,打印出完整的请求信息。

通过以上方法,你就能清楚看到实际发送给服务端的内容,对比SOAP UI里的请求,就能很快找出哪里不一致导致的415错误了。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.06 13:29:09