【问题标题】:MailChimp API 3.0 Invalid Resource ErrorMailChimp API 3.0 无效资源错误
【发布时间】:2017-05-21 09:37:26
【问题描述】:

我只是想向 MailChimp 列表中添加一个新成员。但我不断收到以下错误,不太明白为什么:

type: http://developer.mailchimp.com/documentation/mailchimp/guides/error-glossary/
title: Invalid Resource
status: 400
detail: The resource submitted could not be validated. For field-specific details, see the 'errors' array.
instance:
errors:
0:
field:
message: Schema describes object, NULL found instead

这很奇怪,因为我正在发送正文中的确切对象,如文档示例中所述:

{"email_address":"urist.mcvankab+3@freddiesjokes.com", "status":"subscribed"}

我已经在 Postman 和 MailChimp Playground 中尝试过调用。我在这里省略了 JSON 中的某些内容吗?

【问题讨论】:

  • 具有完全相同的错误消息。我已经向他们开放了支持票。希望我能尽快在这里发布解决方案。
  • 我也遇到了同样的问题,有什么解决办法吗?

标签: json mailchimp-api-v3.0


【解决方案1】:

所以我也被卡住了,结果你需要有“merge_fields”。让它成为一个空对象,

{
    "email_address": "blahblar@blarblah.com",
    "status": "subscribed",
    "merge_fields": {}
}

【讨论】:

  • 谢谢!希望在文档中按要求进行标记。我想设置 skip_merge_validation 也可以解决问题。
  • @MattCosentino 考虑到我在 4.5 年前“解决”了这个问题,遗憾的是文档还没有更新以解决这个问题。
【解决方案2】:

确保将您的帖子数据编码为 json。例如在python中:

import requests
import json

data = {
  "email_address": "test_email@gmail.com",
  "status": "subscribed",
  "merge_fields": {}
}

result = requests.post(<YOUR URL>, auth=<YOUR AUTH CREDS>, data=json.dumps(data))

【讨论】:

    【解决方案3】:

    问题出在网址中。您必须在 url 结尾有成员:

      url: 'https://blabla.api.mailchimp.com/3.0/lists/blabla/members',
    

    【讨论】:

      【解决方案4】:

      我正在使用节点应用程序,这对我有用,而不是使用

       url: 'https://blabla.api.mailchimp.com/3.0/lists/{list_id}/members'
      

      试试这个 JavaScript 对象:

      const data = {
      members:[{
      email_address: email,
        status: "subscribed",
        merge_fields: {
          FNAME : firstName,
          LNAME : lastName  }
        }]
      };
      

      并使用网址:

      url: "https://us7.api.mailchimp.com/3.0/lists/{list_id}"
      

      注意:您必须将 JavaScript 对象转换为 JSON

      【讨论】:

        【解决方案5】:

        即使merge_fields 未标记为必填项,也可以绕过要求,将查询参数{ skipMergeValidation: true } 作为addListMember 请求中的第三个参数传递。您可以在下面查看文档和实现:

        • 向列表中添加新成员。
        • @param {String} listId 列表的唯一 ID。
        • @param {module:model/AddListMembers1} 正文
        • @param {Object} 选择可选参数
        • @param {Boolean} opts.skipMergeValidation 如果skip_merge_validation 为真,即使通常需要合并字段,也将接受不带合并字段值的成员数据。这默认为 false。
        • @return {Promise} 一个 {@link https://www.promisejs.org/|Promise},数据类型为 {@link module:model/ListMembers2}
        this.addListMember = function(listId, body, opts) {
          return this.addListMemberWithHttpInfo(listId, body, opts)
            .then(function(response_and_data) {
              return response_and_data.data;
          });
        }
        

        【讨论】:

          猜你喜欢
          • 2017-03-19
          • 2016-02-26
          • 2017-01-27
          • 2016-07-10
          • 2017-03-27
          • 2017-04-20
          • 2016-03-21
          • 2013-08-20
          • 2018-04-17
          相关资源
          最近更新 更多