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

Betfair History API的DownloadListOfFiles接口调用失败,求解决方法

修复Betfair Historic Data API DownloadListOfFiles 请求问题

咱们一步步拆解你调用Betfair历史数据API时遇到的问题,逐个修复:

1. 先解决最明显的问题:截断的JSON请求体

你给出的jsonrpc_req末尾是mar...,明显被截断了——JSON格式要求结构完整、语法正确,残缺的请求体肯定会被API拒绝解析。

首先补全完整的JSON结构,确保所有引号配对、逗号正确,并且包含API要求的字段。比如一个符合规范的请求体应该是这样的:

{
  "sport": "Horse Racing",
  "plan": "Basic Plan",
  "fromDay": 1,
  "fromMonth": 3,
  "fromYear": 2017,
  "toDay": 31,
  "toMonth": 3,
  "toYear": 2017,
  "eventId": null,
  "eventName": null,
  "marketType": null,
  "marketName": null,
  "countryCode": null,
  "fileType": "results"
}

你可以根据自己的需求调整字段(比如指定marketType过滤特定赛事类型),但要保证JSON语法完全正确——可以用在线JSON校验工具快速检查。

2. 使用正确的HTTP请求方法

DownloadListOfFiles接口需要用POST方法发送请求,而不是默认的GET。如果你用Python的requests库,一定要用requests.post()而不是requests.get()。

这里给你一个完整的可运行示例代码:

import requests

# 接口地址
url = 'http://historicdata.betfair.com/api/DownloadListOfFiles'
# 替换成你的有效会话令牌
session_token = "YOUR_VALID_SESSION_TOKEN"

headers = {
    'X-Authentication': session_token,
    'content-type': 'application/json'
}

# 完整的请求参数
request_body = {
    "sport": "Horse Racing",
    "plan": "Basic Plan",
    "fromDay": 1,
    "fromMonth": 3,
    "fromYear": 2017,
    "toDay": 31,
    "toMonth": 3,
    "toYear": 2017,
    "eventId": None,
    "eventName": None,
    "marketType": None,
    "fileType": "results"
}

try:
    # 发送POST请求
    response = requests.post(url, headers=headers, json=request_body)
    # 主动抛出HTTP状态码错误(比如401、400)
    response.raise_for_status()
    # 打印API返回的结果
    print("请求成功,返回数据:")
    print(response.json())
except requests.exceptions.RequestException as e:
    print(f"请求出错:{str(e)}")
    # 打印响应内容,方便排查具体错误
    if response:
        print(f"API返回详情:{response.text}")

3. 验证会话令牌的有效性

确保你的session_token是通过Betfair官方认证接口合法获取的,并且没有过期。如果令牌无效,API会返回401 Unauthorized这类错误,这时你需要重新获取有效的会话令牌。

4. 检查参数的合法性

  • 确认plan字段的值和你的订阅计划完全匹配:比如"Basic Plan"是否是API认可的取值,避免拼写错误(比如大小写、空格问题)。
  • 日期范围要合法:你指定的2017年3月1日到31日是没问题的,但要保证from日期不晚于to日期。
  • 不需要过滤的字段保持null(Python里用None)是允许的,但要确认API文档中这些字段是否接受null值。

调试小技巧

如果还是遇到问题,一定要打印出响应的状态码和完整响应内容——API通常会返回具体的错误信息(比如JSON解析失败、参数无效、认证失败),这些信息是定位问题的关键。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.25 02:23:26