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

调用api.ticktick.com接口返回500错误,Postman与JS代码可正常运行

TickTick API POST请求返回500错误的解决方案

问题根源在于请求体格式不匹配:Axios和Postman默认会以JSON格式发送请求体并设置正确的Content-Type,但Python的requests和Dart的http库用字典传递data/body时,默认采用表单编码格式,不符合TickTick API的预期,导致服务器返回500错误。

修复后的Python代码

直接使用json参数代替data参数,requests会自动帮你序列化JSON并设置Content-Type: application/json:

import requests    
headers = {'Authorization': '[access token]'}    
response = requests.post('https://api.ticktick.com/open/v1/task',
                         json={'title': 'mytitle'},
                         headers=headers)   

也可以手动序列化数据并指定请求头:

import requests
import json

headers = {
    'Authorization': '[access token]',
    'Content-Type': 'application/json'
}    
data = json.dumps({'title': 'mytitle'})
response = requests.post('https://api.ticktick.com/open/v1/task',
                         data=data,
                         headers=headers)   

修复后的Dart代码

需要将请求体序列化为JSON字符串,同时手动指定Content-Type请求头:

import 'dart:convert';
import 'package:http/http.dart' as http;

// 函数内代码
var url = Uri.https('api.ticktick.com', 'open/v1/task');
var headers = {
  "Authorization": "[access token]",
  "Content-Type": "application/json"
};
var body = jsonEncode({'title': 'mytitle'});
var response = await http.post(url, headers: headers, body: body);

为什么Postman和Axios能正常工作?

  • Postman发送JSON请求时,会自动配置Content-Type: application/json并正确序列化请求体。
  • Axios的data参数默认会被序列化为JSON,同时自动添加Content-Type: application/json请求头,完全匹配API的格式要求。

内容的提问来源于stack exchange,提问作者Стас Фролкин

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.08 09:40:46