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