将 LWP::UserAgent 从 Perl 转换为 Ruby
Converting an LWP::UserAgent from Perl to Ruby
我正在尝试将 User-Agent
添加到我的 HTTP 请求中的 header(在 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' => '
your_agent_here'})
response = http.request(req)
您的 Perl 示例没有显示您设置 User-Agent header(使用 agent
方法)。那是识别执行事务的软件的 header。您在 Perl 示例中添加了 Basic Auth 凭据,这是用户证明他们被允许访问资源的方式。它们是完全不同的东西。
当您 print $ua
时,您看到的是 object 的内存地址,例如 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
我正在尝试将 User-Agent
添加到我的 HTTP 请求中的 header(在 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' => '
your_agent_here'})
response = http.request(req)
您的 Perl 示例没有显示您设置 User-Agent header(使用 agent
方法)。那是识别执行事务的软件的 header。您在 Perl 示例中添加了 Basic Auth 凭据,这是用户证明他们被允许访问资源的方式。它们是完全不同的东西。
当您 print $ua
时,您看到的是 object 的内存地址,例如 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