首页 > 解决方案 > Rails 对 Eventbrite 的 POST 请求不起作用

问题描述

我正在尝试使用 EventBrite 的 API 发布(创建)一个事件。

我有身份验证密钥,但在格式化请求时遇到问题。

这就是我所拥有的。

def self.syndicate_event
    event = Event.first
    body_string =
    "{
        'event': {
            'name': {
              'html': #{event.name}
            },
            'description': {
              'html': #{event.description}
            },
            'start': {
              'utc': #{event.start},
              'timezone': #{event.start_timezone},
            },
            'end': {
              'utc': #{event.end},
              'timezone': #{event.end_timezone},
            },
            'currency':#{event.currency}
        }
    }"
    json_body = body_string.to_json
    respo = HTTP.auth("Bearer mytoken")
    .post("https://www.eventbriteapi.com/v3/events/",
            params: json_body
          )
  end

它给了我:“无法将字符串转换为数组。” 错误。有什么想法吗?如果有人使用了 EventBrite 的 API,除了像这样格式化我的字符串然后将其转换为 JSON 之外,还有没有更好的方法。

谢谢

标签: ruby-on-railsjsonapihttpeventbrite

解决方案


我不熟悉 EventBrite API,但看起来 json_body 字符串格式不正确。您可以通过执行来验证您的 json 是否有效,JSON.parse(json_body)并且应该返回您的 json 的哈希表示。如果格式不正确,则会引发错误。

我会选择to_json在哈希实例上使用该方法来保证 json 不会格式错误。

就像是:

body_object = 
    { event: {
        name: {
          html: event.name
        },
        description: {
          html: event.description
        }...,
        currency: event.currency }
    }
json_body = body_object.to_json

推荐阅读