32

https://orbit.theplanet.com/Login.aspx?url=/Default.aspx (任意のユーザー名とパスワードの組み合わせを使用)でログインしようとすると、ログイン資格情報が従来とは異なるセットとして送信されることがわかります。 POST データの: 寂しい JSON 文字列だけで、通常の key=value ペアはありません。

具体的には、次の代わりに:

username=foo&password=bar

または次のようなもの:

json={"username":"foo","password":"bar"}

単純に次のとおりです。

{"username":"foo","password":"bar"}

LWPまたは代替モジュールでそのような要求を実行することは可能ですか? 私はそうする準備ができていIO::Socketますが、可能であればより高レベルなものを好むでしょう.

4

4 に答える 4

78

HTTP リクエストを手動で作成し、それを LWP に渡す必要があります。次のようなものがそれを行うはずです:

my $uri = 'https://orbit.theplanet.com/Login.aspx?url=/Default.aspx';
my $json = '{"username":"foo","password":"bar"}';
my $req = HTTP::Request->new( 'POST', $uri );
$req->header( 'Content-Type' => 'application/json' );
$req->content( $json );

次に、LWP でリクエストを実行できます。

my $lwp = LWP::UserAgent->new;
$lwp->request( $req );
于 2010-11-16T21:48:12.577 に答える
15

それをボディとして POST リクエストを作成し、LWP に渡すだけです。

my $req = HTTP::Request->new(POST => $url);
$req->content_type('application/json');
$req->content($json);

my $ua = LWP::UserAgent->new; # You might want some options here
my $res = $ua->request($req);
# $res is an HTTP::Response, see the usual LWP docs.
于 2010-11-16T21:45:54.403 に答える