tiempo tarda llegar inmigración formulario form foia español cuánto cuanto perl json http-post lwp

perl - tarda - foia form



¿Cómo puedo hacer una solicitud JSON POST con LWP? (4)

Deberá construir la solicitud HTTP manualmente y pasarla a LWP. Algo como lo siguiente debería hacerlo:

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 );

Luego puede ejecutar la solicitud con LWP:

my $lwp = LWP::UserAgent->new; $lwp->request( $req );

Si intenta iniciar sesión en https://orbit.theplanet.com/Login.aspx?url=/Default.aspx (use cualquier combinación de nombre de usuario / contraseña), puede ver que las credenciales de inicio de sesión se envían como un conjunto no tradicional de datos POST: solo una cadena JSON solitaria y ningún par clave = valor normal.

Específicamente, en lugar de:

username=foo&password=bar

o incluso algo así como:

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

Simplemente hay:

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

¿Es posible realizar una solicitud de este tipo con LWP o un módulo alternativo? Estoy preparado para hacerlo con IO::Socket pero preferiría algo más de alto nivel si estuviera disponible.


La página solo usa una entrada "anónima" (sin nombre), que pasa a estar en formato JSON.

Debería poder usar $ ua-> post ($ url, ..., Contenido => $ contenido) , que a su vez usa la función POST () de HTTP::Request::Common .

use LWP::UserAgent; my $url = ''https://orbit.theplanet.com/Login.aspx?url=/Default.aspx''; my $json = ''{"username": "foo", "password": "bar"}''; my $ua = new LWP::UserAgent(); $response = $ua->post($url, Content => $json); if ( $response->is_success() ) { print("SUCCESSFUL LOGIN!/n"); } else { print("ERROR: " . $response->status_line()); }

Alternativamente, también puede usar un hash para la entrada JSON:

use JSON::XS qw(encode_json); ... my %json; $json{username} = "foo"; $json{password} = "bar"; ... $response = $ua->post($url, Content => encode_json(/%json));


Si realmente quieres usar WWW :: Mechanize puedes establecer el encabezado ''content-type'' antes de publicar

$mech->add_header( ''content-type'' => ''application/json'' ); $mech->post($uri, Content => $json);


Simplemente crea una solicitud POST con eso como cuerpo y dáselo a 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.