Как использовать Rest API со сложными объектами, используя Httparty и Ruby - PullRequest
1 голос
/ 25 августа 2010

Я пытаюсь реализовать вызов этого метода API в Ruby https://zferral.com/api-docs/affiliate#aff-create-usage-example, который ожидает этот объект:

{  "affiliate" : {
    "email"           : "john@example.com",
    "send_user_email" : "1" }}

Используя класс Httparty, я называю это:

result = self.class.post("/api/#{@apikey}/affiliate/create.xml", :body => {:affiliate => {:email => email}})

К сожалению, API продолжает посылать мне «Требуется электронная почта». Я пытался перейти на JSON, я изменил: тело с: запрос, и т.д ...

Кто-нибудь может показать мне, как правильно вызывать метод affiliate / create?

Спасибо.

Ответы [ 2 ]

2 голосов
/ 26 августа 2010

Вот как я исправил свою проблему:

    url = URI.parse('https://xxxx.zferral.com/api/xxx/affiliate/create.xml')
    http = Net::HTTP.new(url.host, url.port)
    http.use_ssl = true
    http.verify_mode = OpenSSL::SSL::VERIFY_NONE
    request = Net::HTTP::Post.new(url.path)
    request.body = "<?xml version='1.0' encoding='UTF-8'?><affiliate><email>#{email}</email><send_user_email>0</send_user_email></affiliate>"
    request.content_type = 'text/xml'
    response = http.request(request)
2 голосов
/ 25 августа 2010

Вы отправляете json, но публикуете его в create.xml --- в rails, это автоматически устанавливает тип контента на xml, когда вы публикуете в create.xml

Попробуйте отправить на /api/#{@apikey}/affiliate/create.json

Если это не сработает - следите ли вы за дизайном класса, который действительно нравится HTTParty?http://railstips.org/blog/archives/2008/07/29/it-s-an-httparty-and-everyone-is-invited/

...