If you try to login at https://orbit.theplanet.com/Login.aspx?url=/Default.aspx (use any username/password combination), you can see that the login credentials are sent as a non-traditional set of POST data: just a lonesome JSON string and no normal key=value pair.
Specifically, instead of:
username=foo&password=bar
or even something like:
json={"username":"foo","password":"bar"}
There's simply:
{"username":"foo","password":"bar"}
Is it possible to perform such a request with LWP
or an alternative module? I am prepared to do so with IO::Socket
but would prefer something more high-level if available.
The page is just using an "anonymized" (without name) input, which happens to be in JSON format.
You should be able to use $ua->post($url, ..., Content => $content), which in turn use the POST() function from HTTP::Request::Common.
Alternatively, you can also use an hash for the JSON input:
Just create a POST request with that as the body, and give it to LWP.
You'll need to construct the HTTP request manually and pass that to LWP. Something like the following should do it:
Then you can execute the request with LWP:
If you really want to use WWW::Mechanize you can set the header 'content-type' before post