• ベストアンサー

LWP でリクエストヘッダを変更

LWPを使ってhttpsにアクセスしたいのですが、仕様の要求からリクエストヘッダを変更しなければならないのです。 HTTP::Lite だと add_req_header というのが使えるようですが、LWPだと同様の機能はどう書けばいいのでしょうか?

質問者が選んだベストアンサー

  • ベストアンサー
回答No.3

(英語)http://search.cpan.org/~gaas/libwww-perl/lib/HTTP/Request/Common.pm (日本語)http://homepage3.nifty.com/hippo2000/perltips/HTTP/Request/Common.html くらいでしょうか。系統立った詳しい情報は、余り無いんじゃないかと思います(私は見たこと無いです)。

moritan2
質問者

お礼

ありがとうございました。 HTTP::Request の方でできそうなので勉強してみます。

moritan2
質問者

補足

日本語のページは私がよく見たページです。 $ua->request(GET 'http://www.sn.no/'); $ua->request(POST 'http://somewhere/foo', [foo => bar, bar => foo]); というのが書いてあって、わたしはこれしか知らなかったので、#1に対する補足のようなことを書いてしまったんでした。

その他の回答 (2)

回答No.2

>お示しの方法だと、'user-agent'=>'hogehoge' は単にCGIのパラメータとしてわたされるだけような気がするのですが。 とりあえず一度、参考ページを見てください。 参考ページの、 $r = HTTP::Request->new( $method, $uri, $header, $content ) を使っています。 少なくとも私の環境では、リクエストヘッダが変更されます。

moritan2
質問者

補足

わかりました。たしかにお示しの方法で間違いないようでした。ありがとうございました。 私は HTTP::Request::Common の方を使っていたので勘違いしていたようです。 この2つの違いについて解説してあるページはご存知でしょうか?

回答No.1

以下で出来ます。 色々やり方がありますので、参考URLを見てください。 use LWP::UserAgent; $request = HTTP::Request->new(GET => 'http://www.example.com/', ['foo1'=>'bar1', 'foo2'=>'bar2', 'user-agent'=>'hogehoge']); $ua = LWP::UserAgent->new; $response = $ua->request($request); print $response->content;

参考URL:
http://search.cpan.org/~gaas/libwww-perl/lib/HTTP/Request.pm
moritan2
質問者

補足

すいません、ことばが足りなかったようです。 POSTで送信する文字列ではなく、リクエストヘッダを変更したいんです。 たとえば、Content-Type=ABCDEF; という具合です。お示しの方法だと、'user-agent'=>'hogehoge' は単にCGIのパラメータとしてわたされるだけような気がするのですが。

関連するQ&A