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

Python实现欧盟VAT自动验证遇问题:SOAP请求返回WSDL而非预期响应

解决VIES VAT验证接口返回WSDL内容的问题

我帮你排查了下当前的问题,核心原因是你把SOAP请求发送到了WSDL描述文件的URL,而非实际处理请求的服务端点。WSDL文件只是用来定义服务结构的文档,并不会接收和处理你的验证请求,所以才会返回整个WSDL页面的内容。

关键修复点

  • 修正请求URL:将原代码中的http://ec.europa.eu/taxation_customs/vies/checkVatService.wsdl替换为实际的服务端点地址:http://ec.europa.eu/taxation_customs/vies/services/checkVatService
  • 修复拼写错误:原代码中import reqests是拼写错误,应该改为import requests
  • (可选但推荐)添加SOAPAction头:虽然部分SOAP服务不强制要求,但添加这个头可以提升请求的兼容性

修正后的完整代码

import requests  # 修复拼写错误

# 使用实际的SOAP服务端点,而非WSDL文档地址
url = 'http://ec.europa.eu/taxation_customs/vies/services/checkVatService' 
headers = {
    'content-type': 'text/soap+xml',
    'SOAPAction': 'urn:ec.europa.eu:taxud:vies:services:checkVat:types/checkVat'
} 

# 你的SOAP请求体保持不变
body= """<?xml version="1.0" encoding="UTF-8" standalone="no"?> 
<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" > 
<soapenv:Header/> 
<soapenv:Body> 
<urn:checkVat xmlns:urn="urn:ec.europa.eu:taxud:vies:services:checkVat:types"> 
<urn:countryCode>NL</urn:countryCode> 
<urn:vatNumber>800938495B01</urn:vatNumber> 
</urn:checkVat> 
</soapenv:Body> 
</soapenv:Envelope>""" 

# 发送请求并打印结果
response = requests.post(url, data=body, headers=headers) 
print(f"请求状态码: {response.status_code}")
print("\n响应内容:")
print(response.text)

额外注意事项

  • 请求频率限制:VIES服务有严格的请求频率限制,如果你需要批量验证多个VAT号,记得在请求之间添加适当的延迟(比如1-2秒),避免被临时限流
  • 测试用VAT号:你提供的测试号DE 147799609、SK 2023661948、CZ 26697131需要去掉空格后再传入请求体,比如DE147799609
  • HTTPS支持:如果遇到HTTP连接问题,可以尝试使用HTTPS版本的端点:https://ec.europa.eu/taxation_customs/vies/services/checkVatService,现在官方更推荐使用HTTPS协议

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.15 07:48:41