从API响应中获取令牌

时间:2015-02-21 20:38:41

标签: ruby httparty

我有一个我正在连接的API,根据文档,我想从第一次调用API获取login_token。我用httparty设置了一个初始化方法,我得到了令牌,但我不知道如何将它放在我的初始化方法中,或者为什么我似乎无法正确解析它。

这是启动方法:

  def initialize(username,password)
    @username = username
    @password = password
    @login_token = login_token
    get_token(self.class.post("/login/", body: {username: username, password: password}).parsed_response)
  end

此外,我所做的get_token方法应该获得令牌:

  def get_token
    if response ['success'] == 'true'
      login_token = @login_token
    else
      raise "Code: #{response["message"]}"
    end
  end

我得到的回答是这样的:

reading all...
-> "{\n  \"login_token\": \"...token...\", \n  \"success\": true\n}"
read 99 bytes
Conn close
MultiXml::ParseError: Start tag expected, '<' not found

我认为我的错误来自initialize方法的parsed_response部分。关于错误以及如何将此标记放入我的方法的任何想法?

- 编辑 -

在此文件的顶部我更改了

format :xml

format :json

现在我的错误出在我的get_token方法中。它似乎没有正确地读取响应。

1 个答案:

答案 0 :(得分:0)

我明白了!我将响应类型更改为json,然后使用了

instance_variable_set 

让它发挥作用!

def get_token(response)
      response.each { |login_token, value | instance_variable_set("@#{login_token}", value ) }
  end