Проблемы с MailChimp API в Ruby. Код ошибки: -90 - PullRequest
5 голосов
/ 08 марта 2011

Я использую следующий код в своем контроллере MailChimp для отправки простых данных новостной рассылки. При отправке я получаю следующую ошибку: «Метод не экспортируется этим сервером -90». Я прикрепил код контроллера ниже. Я использую этот контроллер для простой формы подписки на рассылку. (Имя, адрес электронной почты)

class MailchimpController < ApplicationController

  require "net/http"
  require "uri"

  def subscribe  
    if request.post?
      mailchimp = {}
      mailchimp['apikey']  =  'f72328d1de9cc76092casdfsd425e467b6641-us2'
      mailchimp['id']  =  '8037342dd1874'
      mailchimp['email_address']  =  "email@gmail.com"
      mailchimp['merge_vars[FNAME]']  =  "FirstName"
      mailchimp['output']  =  'json'

      uri = URI.parse("http://us2.api.mailchimp.com/1.3/?method=listSubscribe")
      response = Net::HTTP.post_form(uri, mailchimp)    
      mailchimp = ActiveSupport::JSON.decode(response.body)

      if mailchimp['error']
        render :text =>    mailchimp['error'] + "code:" + mailchimp['code'].to_s  
      elsif mailchimp == 'true'
        render :text => 'ok' 
      else
        render :text => 'error'
      end
    end
   end    

end

Ответы [ 3 ]

4 голосов
/ 09 марта 2011

Я настоятельно рекомендую камень Гоминид: https://github.com/tatemae-consultancy/hominid

2 голосов
/ 08 марта 2011

Проблема в том, что Net :: HTTP.post_form не передает параметр GET метода.Не будучи большим пользователем ruby, я не уверен, что на самом деле правильно сделать это с Net :: HTTP, но это работает:

require "net/http"
data="apikey=blahblahblah"
response = nil
Net::HTTP.start('us2.api.mailchimp.com', 80) {|http|
  response = http.post('/1.3/?method=lists', data)
}
p response.body

Это метод lists () (для простоты)и вам придется создавать (и urlencode ваши значения!) ваши полные параметры POST, а не просто предоставлять хэш.

Вы взглянули на многие драгоценные камни, уже доступные для ruby?

http://apidocs.mailchimp.com/downloads/#ruby

Более серьезная проблема, и главная причина, по которой я отвечаю на это, заключается в том, что ваш ключ API недостаточно хорошо запутан.Конечно, я привык работать с ними, но я смог догадаться об этом очень быстро.Я бы посоветовал немедленно перейти и отключить этот ключ в своей учетной записи, а затем отредактировать сообщение, чтобы оно содержало полностью фиктивные данные, а не что-либо, близкое к правильному ключу.С другой стороны, идентификатор списка не имеет значения.

1 голос
/ 09 марта 2011

Вы сможете использовать свой хеш, если преобразуете его в json, прежде чем передать его в Net :: HTTP.Объединенный код будет выглядеть примерно так:

  mailchimp = {}
  mailchimp['apikey']             =  'APIKEYAPIKEYAPIKEYAPIKEY'
  mailchimp['id']                 =  '8037342dd1874'
  mailchimp['email_address']      =  "email@gmail.com"
  mailchimp['merge_vars[FNAME]']  =  "FirstName"
  mailchimp['output']             =  'json'

  response = nil
  Net::HTTP.start('us2.api.mailchimp.com', 80) {|http|
    response = http.post('/1.3/?method=listSubscribe', mailchimp.to_json)
  }
...