Hen*_*ang 3 php ruby basic-authentication faraday
我有一个我想要访问的 php 页面,该页面受基本身份验证保护。我知道网址和用户名/密码,它们在代码中列出如下:
url = 'https://henry.php' # note that it is a php website
username = 'foo'
password = 'bar'
Run Code Online (Sandbox Code Playgroud)
Faraday 提供基本的身份验证功能,他们的文档说我应该使用以下代码:
connection = Faraday.new(url: url) do |conn|
conn.basic_auth(username, password)
end
Run Code Online (Sandbox Code Playgroud)
我想获取上述网址的响应正文,以确保基本身份验证确实成功并且我可以访问内容,但我不知道如何操作。我尝试了以下每种方法,但都不起作用:
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
Run Code Online (Sandbox Code Playgroud)
获得尸体的正确方法是什么?
笔记:
在浏览器中,我直接访问https://henry.php,浏览器提示我一个框,询问我的用户名和密码,我输入它们,我可以看到内容 - 我可以看到我拥有的详细信息是正确的,它应该可以工作(这是因为浏览器知道如何进行基本身份验证),但我只是不知道如何使用 Faraday 在代码中执行此操作。
回答我自己的问题:
而不仅仅是:
connection = Faraday.new(url: url) do |conn|
conn.basic_auth(username, password)
end
Run Code Online (Sandbox Code Playgroud)
你应该记住使用适配器:
connection = Faraday.new(url: url) do |conn|
conn.adapter Faraday.default_adapter # make requests with Net::HTTP
conn.basic_auth(username, password)
end
Run Code Online (Sandbox Code Playgroud)
因为 Faraday 是一个接口,它不执行建立连接和请求的实际工作,适配器会执行此操作,因此您需要它才能工作。
然后,要获得您想要的响应正文,您可以:
response = connection.get
response.body
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
6039 次 |
| 最近记录: |