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

使用Python向Visa API发送POST请求出现415错误的问题排查

解决Visa API POST请求返回415 Unsupported Media Type问题

你的问题出在请求的Content-Type头部未正确设置,Visa API期望接收application/json格式的请求体,但你的代码没有明确指定这个头部,导致服务器无法识别请求体格式,返回415错误。

修复方案一(推荐):使用requests的json参数

requests库的json参数会自动将字典序列化为JSON字符串,同时自动设置Content-Type: application/json头部,无需手动处理序列化和头部:

import requests

url = "https://sandbox.api.visa.com/filedeliveryservice/v1/binFileTransfer"
request_body = {
    "requestHeader": {
        "requestTS": "2017-02-15T22:05:00.000",
        "requestMessageId": "testAnna"
    },
    "requestData": {"fileName": "VBASS_TR_LEVEL3_03262024_3.csv"}
}
r = requests.post(url,
                  cert=(client_cert, client_key),
                  auth=(user_id, password),
                  json=request_body,
                  timeout=10
                  )

修复方案二:手动设置Content-Type头部

如果坚持使用data参数,需要手动添加请求头部,明确告知服务器请求体为JSON格式:

import requests
import json

url = "https://sandbox.api.visa.com/filedeliveryservice/v1/binFileTransfer"
request_body = {
    "requestHeader": {
        "requestTS": "2017-02-15T22:05:00.000",
        "requestMessageId": "testAnna"
    },
    "requestData": {"fileName": "VBASS_TR_LEVEL3_03262024_3.csv"}
}
headers = {"Content-Type": "application/json"}
r = requests.post(url,
                  cert=(client_cert, client_key),
                  auth=(user_id, password),
                  data=json.dumps(request_body),
                  headers=headers,
                  timeout=10
                  )

为什么Playground能成功?

Visa开发者中心的Playground会自动帮你添加正确的请求头部(包括Content-Type: application/json),而你的代码中缺少这一步,因此出现格式不兼容的错误。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.21 05:47:40