2016-01-20 118 views
0

我試圖在我的HTTP請求(Ruby中)的頭部添加一個User-Agent,但我不確定用戶代理字符串的格式。這裏是它是如何在Perl定義:將LWP :: UserAgent從Perl轉換爲Ruby

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)

+0

請編輯您的問題,包括到目前爲止你寫的Ruby代碼。 –

+0

@Jordan我添加了ruby代碼,並加了一部分粗體,我不確定 –

回答

5

你的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 
相關問題