我有这段基本的代码无法正常工作。
如果我运行以下内容,我会得到:
“。rvm / gems / ruby-1.9.3-p484 / gems / multi_xml-0.5.5 / lib / multi_xml / parsers / rexml.rb:18:in"parse':文档”提供的身份验证无效“没有有效的根(MultiXml :: ParseError)”
class Temp
include HTTParty
format :xml
def initialize()
self.class.base_uri "https://beta2014.vchs.vmware.com"
end
def login(username, password)
self.class.basic_auth username, password
self.class.default_options[:headers] = {"Accept" => "application/xml;version=5.7"}
response = self.class.post('/api/iam/login')
# setting global cookie var to be used later on
@cookie = response.headers['vchs-authorization']
return @cookie
end
def plans(token)
token = 'Bearer ' + token
self.class.base_uri "https://beta2014.vchs.vmware.com"
self.class.default_options[:headers] = { 'Accept' => "application/xml;class=com.vmware.vchs.iam.api.schema.v2.classes.user.Users;version=5.7", 'Authorization' => token }
response = self.class.get('/api/sc/plans')
end
end #class Temp
temp = Temp.new()
token = temp.login(username, password)
temp.plans(token)
令牌具有正确的内容。我知道,因为如果我“放置”令牌的价值并将其复制并粘贴到REST客户端,它就可以正常工作。
有趣的是,如果我在REST客户端上生成令牌并且我使用token = <string>
静态设置令牌(而不是调用temp.login
),则调用temp.plans
工作正常,我得到了我的正确回应。
我也尝试过:
tokendummy = temp.login(username, password)
token = <string>
再次失败。
就像token.plans
只有当它是被调用的第一个方法时才有效。如果它是第二个(temp.login
之后)则失败。
它是否与仅在第一次调用的initialize()
方法有关?