将LWP :: UserAgent从Perl转换为Ruby

Noa*_*ker 0 ruby perl user-agent ruby-on-rails httprequest

我试图User-Agent在我的HTTP请求中添加一个头(在Ruby中),但不确定用户代理字符串的格式.这是它在Perl中的定义方式:

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

如果我尝试print $ua;,我会得到一个每次都改变的哈希值.我相信在Ruby中我应该将凭证嵌入到单个字符串中.我怎么知道如何格式化这个字符串?或者,如何成功打印$uaPerl中的内容?

Ruby代码:

http = Net::HTTP.new("your.site.com", 80) req = Net::HTTP::Get.new("/path/to/the/page.html", {'User-Agent' => 'your_agent_here'}) response = http.request(req)

bri*_*foy 5

您的Perl示例未显示您设置User-Agent标头(使用该agent方法).这是标识执行事务的软件的标题.您正在Perl示例中添加Basic Auth凭据,这是用户演示允许他们访问资源的方式.它们是完全不同的东西.

当你print $ua,你正在看到对象的内存地址,比如LWP::UserAgent=HASH(0x7fa9db00b1b0).

如果要在Ruby示例中设置User-Agent字符串,请填写所需的字符串.

如果要提供基本授权的用户名和密码,请参阅Net :: HTTP文档中的示例:

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
Run Code Online (Sandbox Code Playgroud)