我有一个我想访问的php页面,该页面受基本身份验证保护。我知道网址和用户名/密码,它们在下面的代码中列出:
url = 'https://henry.php' # note that it is a php website
username = 'foo'
password = 'bar'
法拉第提供基本的身份验证功能,their doc说我应该使用以下代码:
connection = Faraday.new(url: url) do |conn|
conn.basic_auth(username, password)
end
我想得到上面网址的响应主体,以确保基本身份验证确实成功,我可以访问内容,但我不知道如何。我尝试了以下各种方法,但没有一种方法有效:
connection.body
connection.response.body
connection.env.response.body
# or
r = connection.get
r.body
r.response.body
r.env.response.body
# or
r = connection.get '/'
r.body
r.response.body
r.env.response.body
获取身体的正确方法是什么?
注意:
在浏览器中,我直接访问https://henry.php,浏览器提示我一个询问我的用户名和密码的框,然后我输入它们,我可以看到内容 - 我可以看到我的详细信息是正确的,它应该有效(这是因为浏览器知道如何进行基本身份验证),但我无法弄清楚如何使用法拉第在代码中执行此操作。
答案 0 :(得分:2)
回答我自己的问题:
而不仅仅是:
connection = Faraday.new(url: url) do |conn|
conn.basic_auth(username, password)
end
你应该记得使用适配器:
connection = Faraday.new(url: url) do |conn|
conn.adapter Faraday.default_adapter # make requests with Net::HTTP
conn.basic_auth(username, password)
end
因为Faraday是一个接口,它不会做连接和请求的实际工作,适配器会这样做,所以你需要它才能工作。
然后,为了获得你想要的反应体,你可以:
response = connection.get
response.body