如果尝试登录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但希望有更高层次的东西(如果有)。
LWP
IO::Socket
您需要手动构造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 );