坚持使用Ruby中的HTTP获取身份验证

坚持使用Ruby中的HTTP获取身份验证,ruby,json,authentication,Ruby,Json,Authentication,我正在尝试编写简短的脚本来使用GET请求进行HTTP身份验证 这会发出GET请求 def try_login(u, p) path1 = '/index.php' path2 = '?uuser=#{myuser}&ppass=#{mypass}' r = send_request_raw({ 'URI' => "#{path1}#{path2}", 'method' => 'GET' }

我正在尝试编写简短的脚本来使用GET请求进行HTTP身份验证

这会发出GET请求

    def try_login(u, p)
      path1 = '/index.php'
      path2 = '?uuser=#{myuser}&ppass=#{mypass}'
      r = send_request_raw({
        'URI' => "#{path1}#{path2}",
        'method' => 'GET'
      })
    ...continued...
但此代码不起作用,因为错误显示:

未定义的局部变量或方法“myuser”

-->基本上,我正在尝试发送一(1)个带有登录参数的GET请求,应用程序用特定的数据进行响应。我不知道如何在这个GET请求中为
user
pass
放置占位符

    def try_login(u, p)
      path1 = '/index.php'
      path2 = '?uuser=#{myuser}&ppass=#{mypass}'
      r = send_request_raw({
        'URI' => "#{path1}#{path2}",
        'method' => 'GET'
      })
    ...continued...

接下来,我检查HTTP响应。响应以JSON mime的形式出现,如下所示:

成功响应

{"param1":1,"param2"="Auth Success","menu":0,"userdesc":"My User","user":"uuser","pass":"ppass","check":"success"}
失败响应

{"param1":-1,"param2"="Auth Fail","check":"fail"}
-->如何检查响应主体中的此类数据

我已经试了一整天了,但是完全卡住了。请给我一些建议

编辑: 我不明白为什么有人否决了这个问题,说我的研究很少甚至没有。直到昨天早上之前,我对ruby代码一点也不了解&使用它。然后我花了很多时间看了很多不同的例子,制作了我的脚本并进行了测试。当它仍然不起作用时,我在这里问了我的问题。请,如果你仍然想否决投票,那么就这么做吧,但请至少分享一些解决这个问题的建议

def try_login(u, p)
  path1 = '/index.php'
  path2 = '?uuser=#{myuser}&ppass=#{mypass}'
  r = send_request_raw({
    'URI' => "#{path1}#{path2}",
    'method' => 'GET'
  })
...continued...
应该是:

def try_login(u, p)
  path1 = '/index.php'
  path2 = "?uuser=#{u}&ppass=#{p}"
  r = send_request_raw({
    'URI' => "#{path1}#{path2}",
    'method' => 'GET'
  })
...continued...
对于在Ruby中解析JSON,我建议您看看另一个问题的答案


Edit:try\u login(u,p)无法正常工作的原因是Ruby没有对单引号(
)字符串进行字符串插值。此外,
myuser
mypass
似乎不是正确的变量。

为什么不能直接说(r['param2']=='Auth Fail')…?--假设您已经解析了json..您是在问如何解析json吗?还有,这不是http身份验证。是的,我有两个问题。首先是如何发送一个带有用户名和密码占位符的GET请求,这样我就可以最终遍历用户,传递值。第二个问题是,一旦收到json响应,我如何解析以找到pass/fail关键字。一次只问一个问题,而不是多个问题,除非它们密切相关。你的两个不是紧密相关的。@theTinMan都是一个练习的相关子部分。我正在尝试使用一个GET请求来完成这项任务,我知道它只返回一个特定的内容类型响应。因此,我把这两部分都放在这里。谢谢回复@rtcherry。但我不明白。你的意思是,当我执行“URI”=>“#{path1}#{path2}”时,Ruby不支持此操作吗?如果是这种情况,我如何以其他方式实现这一点…?此外,为了清晰起见,这里只显示了变量myuser和mypass。实际代码有您指出的u&p。。塔克斯@Sunshine让我们说
u='test\u user'
p='test\u password'
'?uuser={u}&ppass={p}'
将为您提供字符串
?uuser={u}&ppass={p}
,但
“?uuser={u}&ppass={p}
将为您提供字符串
?uuser=test\ppass=test\p}