- ベストアンサー
LWP でリクエストヘッダを変更
LWPを使ってhttpsにアクセスしたいのですが、仕様の要求からリクエストヘッダを変更しなければならないのです。 HTTP::Lite だと add_req_header というのが使えるようですが、LWPだと同様の機能はどう書けばいいのでしょうか?
- みんなの回答 (3)
- 専門家の回答
質問者が選んだベストアンサー
(英語)http://search.cpan.org/~gaas/libwww-perl/lib/HTTP/Request/Common.pm (日本語)http://homepage3.nifty.com/hippo2000/perltips/HTTP/Request/Common.html くらいでしょうか。系統立った詳しい情報は、余り無いんじゃないかと思います(私は見たこと無いです)。
その他の回答 (2)
- fdsjaklfjas
- ベストアンサー率81% (96/118)
>お示しの方法だと、'user-agent'=>'hogehoge' は単にCGIのパラメータとしてわたされるだけような気がするのですが。 とりあえず一度、参考ページを見てください。 参考ページの、 $r = HTTP::Request->new( $method, $uri, $header, $content ) を使っています。 少なくとも私の環境では、リクエストヘッダが変更されます。
補足
わかりました。たしかにお示しの方法で間違いないようでした。ありがとうございました。 私は HTTP::Request::Common の方を使っていたので勘違いしていたようです。 この2つの違いについて解説してあるページはご存知でしょうか?
- fdsjaklfjas
- ベストアンサー率81% (96/118)
以下で出来ます。 色々やり方がありますので、参考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;
補足
すいません、ことばが足りなかったようです。 POSTで送信する文字列ではなく、リクエストヘッダを変更したいんです。 たとえば、Content-Type=ABCDEF; という具合です。お示しの方法だと、'user-agent'=>'hogehoge' は単にCGIのパラメータとしてわたされるだけような気がするのですが。
お礼
ありがとうございました。 HTTP::Request の方でできそうなので勉強してみます。
補足
日本語のページは私がよく見たページです。 $ua->request(GET 'http://www.sn.no/'); $ua->request(POST 'http://somewhere/foo', [foo => bar, bar => foo]); というのが書いてあって、わたしはこれしか知らなかったので、#1に対する補足のようなことを書いてしまったんでした。