3

HTTP::Request::CommonURLへの投稿を行うために使用しようとしました。残念ながら、認証では機能しないようで、単純な ol' に戻さなければなりませんでしたHTTP::Request。認証が必要ない場合は、次の方法ですべてを行うことができました。

use HTTP::Request::Common;

my $browser = LWP::UserAgent->new;

$browser->request (
    POST $url, 
    Content => [
        Name => $name,
        Address => $address,
    ],
);

残念ながら、認証のため、次の場所にフォールバックする必要がありましたHTTP::Request

use HTTP::Request;

my $browser = LWP::UserAgent->new;
my $request = HTTP::Request;
my $request->authentication_basic($user, $pass);
my $request->method("POST");
my $request->url($url);

# Create Content Byte String
my $uri = URI->new('http://');  #URL isn't needed, just the object
$uri->form_query(Name => $name, Address => $address);
my $content = $uri->query;

$request->content($content);

# Set the headers for the content
$request->header( "Content-Type" => "application/x-www-form-urlencoded" );
$request->header( "Content-Length" => length($content) );

# Now send your request through your browser
my $response = $browser->request($request);

コードがはるかに複雑であることがわかります。コードの保守が容易に思えたので元に戻したいHTTP::Request::Commonのですが、認証はどのように処理すればよいですか?

4

1 に答える 1

5

POSTHTTP::Requestオブジェクトの単なる派手なコンストラクターです。それを使用してリクエスト オブジェクトを作成し、認証を設定します。

use HTTP::Request::Common;

my $browser = LWP::UserAgent->new;
my $request = POST $url, 
    Content => [
        Name => $name,
        Address => $address,
    ];

$request->authorization_basic($user, $pass); 

my $response = $browser->request($request);
于 2013-05-20T19:35:06.420 に答える