4

Mechanize 2.3 でカスタム ヘッダーを設定する簡単な方法はありますか?

以前の解決策を試しましたが、次のようになります。

$agent = Mechanize.new
$agent.pre_connect_hooks << lambda { |p|
  p[:request]['Referer'] = 'https://wwws.mysite.com/cgi-bin/apps/Main'
} 

# ./mech.rb:30:in `<main>': undefined method `pre_connect_hooks' for nil:NilClass (NoMethodError)
4

3 に答える 3

14

ドキュメントは言う:

get(uri, parameters = [], referer = nil, headers = {}) { |page| ... }

たとえば、次のようになります。

agent.get 'http://www.google.com/', [], agent.page.uri, {'foo' => 'bar'}

あるいは、あなたが好きかもしれません:

agent.request_headers = {'foo' => 'bar'}
agent.get url
于 2012-09-01T02:08:55.130 に答える
3

コピーしているコードを誤解しました。例には改行がありましたが、コードとしてタグ付けされていなかったため、フォーマットでは表示されなくなりました。$agent初期化される前に使用しようとしているため、が含まnilれます。オブジェクトを初期化してから使用する必要があります。これを試してみてください:

$agent = Mechanize.new
$agent.pre_connect_hooks << lambda { |p| p[:request]['Referer'] = 'https://wwws.mysite.com/cgi-bin/apps/Main' }
于 2012-04-12T17:53:29.920 に答える
1

この質問について、私は人々が使用しているように見えることに気付きました:

page = agent.get("http://www.you.com/index_login/", :referer => "http://www.you.com/")

余談ですが、この回答をテストしたところ、これは私の実際の問題の背後にある問題ではなかったようです。訪問中、私は常に完全なCookie jarをyaml形式で読み込んで保存しています。しかし、それはもちろん別の問題につながります。

于 2012-04-12T13:34:31.277 に答える