我正在尝试使用rest-client向REST服务(HP ALM 11 REST API fwiw)发布请求并继续获取未经授权的响应。可能是我没有正确地遵循文档,但我也不确定我正在正确地处理标题。到目前为止,我在Google上搜索RestClient一直没有结果。任何帮助将不胜感激:
代码:
@alm_url = "http://alm_url/qcbin/"
@user_name = "username"
@user_password = "password"
authentication_url = @alm_url + "rest/is-authenticate"
resource = RestClient::Resource.new authentication_url
resource.head :Authorization => Base64.encode64(@user_name) + ":" + Base64.encode64(@user_password)
response = resource.get
#response = RestClient.get authentication_url, :authorization => @username, @user_password
Rails.logger.debug response.inspect
基于此SO question我还尝试了以下内容但没有成功:
@alm_url = "http://alm_url/qcbin/"
@user_name = "username"
@user_password = "password"
authentication_url = @alm_url + "rest/is-authenticate"
resource = RestClient::Resource.new authentication_url, {:user => @user_name, :password => @user_password}
response = resource.get
#response = RestClient.get authentication_url, :authorization => @username, @user_password
Rails.logger.debug response.inspect
文档:
客户端向身份验证发送有效的基本身份验证标头 点。
GET / qcbin / authentication-point / authenticate授权:基本 ABCDE123
服务器验证基本身份验证标头,创建一个新标头 LW-SSO令牌并将其作为LWSSO_COOKIE_KEY返回。
答案 0 :(得分:7)
好的......首先,如果我找到正确的网址,它会有所帮助:
authentication_url = @alm_url + "rest/is-authenticate"
应该阅读:
authentication_url = @alm_url + "authentication-point/authenticate"
其次,如果我阅读RestClient的文档而不是仅仅查看自述文件,它会有所帮助。 Instance Method Details下的示例有很多帮助。
我的代码现在看起来像:
@alm_url = "http://alm_url/qcbin/"
@user_name = "username"
@user_password = "password"
authentication_url = @alm_url + "authentication-point/authenticate"
resource = RestClient::Resource.new(authentication_url, @user_name, @user_password)
response = resource.get
Rails.logger.debug response.inspect
编辑:
哇,我真的过度思考了这一点。我本可以去的:response = RestClient.get "http://#{@user_name}:#{@user_password}@alm_url/qcbin/authentication-point/authenticate"