我有一个我正在连接的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方法中。它似乎没有正确地读取响应。
答案 0 :(得分:0)
我明白了!我将响应类型更改为json,然后使用了
instance_variable_set
让它发挥作用!
def get_token(response)
response.each { |login_token, value | instance_variable_set("@#{login_token}", value ) }
end