运行GET时出现httparty问题

时间:2015-01-13 21:05:02

标签: ruby authorization httparty

我有这段基本的代码无法正常工作。

如果我运行以下内容,我会得到:

“。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()方法有关?

0 个答案:

没有答案