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

如何解决Google Calendar API返回的parseError REST响应问题

解决Delphi REST控件调用Google Calendar API时的parseError问题

从你的代码片段和遇到的parseError来看,这基本是Google API没法正确解析你发送的请求内容导致的,大概率是JSON格式、请求头配置或者Delphi REST控件的细节没处理好,咱们一步步排查:

1. 补全并确认Content-Type请求头

你代码里Add方法后面的ctAPPLICATION_J...明显没写完,Google Calendar API要求POST创建事件时,必须把Content-Type设为application/json。一定要完整设置这个参数:

RESTRequest.Body.Add(jsonObjEventResource, ctAPPLICATION_JSON);

另外,也可以直接通过请求参数添加头,避免控件默认的其他冲突设置:

RESTRequest.Params.Clear; // 先清空多余参数
RESTRequest.Params.AddHeader('Content-Type', 'application/json');

2. 检查JSON的合理性(别瞎加不必要的字段)

你的JSON语法看起来没问题,但手动指定id字段可能是个坑——Google Calendar API创建事件时,id是可选字段,API会自动生成唯一ID。如果你不是要更新已有事件,完全没必要加这个字段,万一ID格式不符合Google的要求或者重复,反而会触发解析或逻辑错误。简化后的JSON可以改成这样:

jsonObjEventResource := '{"summary":"test","description":"testing","start":{"date":"2018-04-18"},"end":{"date":"2018-04-18"},"guestsCanInviteOthers":false,"visibility":"private"}';

另外,你可以直接在浏览器控制台用JSON.parse("你的JSON字符串")验证下,确保没有隐形字符或者格式错误。

3. 确认REST控件的基础配置没出错

  • BaseURL要正确:RESTClient的BaseURL必须是https://www.googleapis.com/calendar/v3/calendars/{calendarId}/events,这里的{calendarId}要换成你的实际日历ID(比如主日历填primary就行)。
  • 别忘了授权:Google API必须要OAuth2授权,你得确保请求里带了有效的Authorization头,格式是Bearer {你的AccessToken}:
RESTRequest.Params.AddHeader('Authorization', 'Bearer ' + YourAccessToken);
  • 响应格式配置:把RESTRequest的Response.ContentType设为application/json,确保控件能正确解析API返回的内容。

4. 抓包或开日志看实际发送的内容

有时候代码里的JSON看起来没问题,但实际发送时可能因为控件的编码、转义出问题。你可以开启Delphi REST控件的调试日志,或者用Fiddler这类工具抓包,看看实际发出去的HTTP请求里,JSON是不是真的和你写的一致:

RESTClient.Logging.Enabled := True;
RESTClient.Logging.Level := TRESTLoggingStatus.lsDebug;
// 日志会输出到IDE的Debug窗口,能看到完整的请求和响应内容

5. 用最简JSON做测试

先发送最简化的事件数据,确认能成功创建,再逐步添加其他字段,这样能快速定位是不是某个字段的问题:

jsonObjEventResource := '{"summary":"test","start":{"date":"2018-04-18"},"end":{"date":"2018-04-18"}}';

如果这个最简请求能成功,再逐个加description、guestsCanInviteOthers这些字段,排查出可能的问题点。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.25 06:41:15