【问题标题】:Google Contacts API>'Parse Error' when updating contactsGoogle Contacts API> 更新联系人时出现“解析错误”
【发布时间】:2014-07-08 03:19:27
【问题描述】:

几周前,我在创建或更新联系人、使用 Google Contacts API、使用 ClientLogin 进行身份验证、使用 Delphi 和 Indy HTTP 堆栈进行编码时开始收到以下错误。该应用程序在此之前可以完美运行。请注意,该应用程序在 Google 最近对该领域的更改之后完全使用 HTTPS(在实施此类更改后,它实际上工作了几周)。读取联系人仍然有效。

HTTP Content-Type 设置为“application/atom+xml”。 正在使用的 Google 通讯录 URL 是“https://www.google.com/m8/feeds/contacts/default/full”。

<?xml version="1.0" encoding="UTF-8"?>
<errors xmlns="http://schemas.google.com/g/2005">
 <error>
  <domain>GData</domain>
  <code>parseError</code>
  <internalReason>Parse Error</internalReason>
 </error>
</errors>

我不知道引入了哪种“解析错误”。 那个空间最近有什么变化吗? 了解 ClientLogin 已被弃用,但 OAuth 2.0 现在是强制更新联系人的吗?

【问题讨论】:

    标签: google-shared-contacts


    【解决方案1】:

    您是否在内容负载中包含 Unicode BOM?这有时会导致 parseError。

    【讨论】:

    • 在使用 UTF-8 编码将 StringList 保存到 Stream 之前,我没有明确地在 TStringList 级别编写 BOM。我已启用 BOM 写入 (StringList.WriteBOM := True),但与 ParseError 消息的结果相同。
    • 明确地将 StringList.WriteBOM 设置为 False 正在解决问题。所以看起来写BOM实际上是问题,经过仔细检查,StringList.WriteBOM实际上默认设置为True。
    • 另请注意,创建联系人现在返回 HTTP 代码 200 而不是 API 文档 (developers.google.com/google-apps/contacts/v3/…) 中所述的 201。
    猜你喜欢
    • 2023-03-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-10-18
    • 1970-01-01
    • 2017-02-11
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多