Ruby 从API响应获取令牌

Ruby 从API响应获取令牌,ruby,httparty,Ruby,Httparty,我有一个我正在连接的API,根据文档,我想从我对API的第一次调用中获得一个登录令牌。我用HttpParty设置了一个初始化方法,并获得了令牌,但我不确定如何将其放置在初始化方法中,或者为什么我似乎无法正确解析它 以下是初始化方法: def initialize(username,password) @username = username @password = password @login_token = login_token get_token(se

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

以下是初始化方法:

  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
另外,下面是我创建的获取令牌方法,该方法应该获取令牌:

  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


现在,我的错误出现在get_令牌方法中。它似乎没有正确读取响应。

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

instance_variable_set 
让它工作起来

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

看起来您正在恢复JSON,但正在尝试将其解析为XML。不知道为什么会这样。
instance_variable_set 
def get_token(response)
      response.each { |login_token, value | instance_variable_set("@#{login_token}", value ) }
  end