将LWP::UserAgent从Perl转换为Ruby

oyxsuwqo  于 2022-12-18  发布在  Ruby
关注(0)|答案(1)|浏览(182)

我尝试在HTTP请求的头中添加一个User-Agent(Ruby),但不确定user-agent字符串的格式。下面是它在Perl中的定义:

use LWP::UserAgent;
my $ua = new LWP::UserAgent(keep_alive=>1);
$ua->credentials($netloc, '', "$user", "$pwd");

如果我尝试print $ua;,我得到一个每次都改变的哈希值,我相信在Ruby中我应该把证书嵌入到一个字符串中,我怎样才能知道如何格式化这个字符串?或者,我怎样才能成功地在Perl中打印$ua的内容?
Ruby代码:
http = Net::HTTP.new("your.site.com", 80) req = Net::HTTP::Get.new("/path/to/the/page.html", {'User-Agent' => '您的代理在此'}) response = http.request(req)

disho6za

disho6za1#

您的Perl示例没有显示如何设置User-Agent标头(使用agent方法)。该标头用于标识执行事务的软件。您在Perl示例中添加了基本身份验证凭据,这是用户证明其被允许访问资源的方式。它们是完全不同的东西。
当您使用print $ua时,您将看到对象的内存地址,如LWP::UserAgent=HASH(0x7fa9db00b1b0)
如果要在Ruby示例中设置User-Agent字符串,请填写所需的字符串。
如果要为基本授权提供用户名和密码,请参阅Net::HTTP docs中的示例:

uri = URI('http://example.com/index.html?key=value')

req = Net::HTTP::Get.new(uri)
req.basic_auth 'user', 'pass'

res = Net::HTTP.start(uri.hostname, uri.port) {|http|
  http.request(req)
}
puts res.body

相关问题