如果您尝试在
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这样做,但是如果可以的话更喜欢更高级的东西。
解决方法
您需要手动构造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 );