[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: automated login to webpage and read resulting web page
hi Tim,
On 3/30/2012 4:59 PM, tim.dclinc@xxxxxxxxx wrote:
> I am looking to write an rpg program to log into a page on our server
> and read the resulting page content. I have attached the login screen html.
I don't understand why you're looking at the UPS Tracking example
(EXAMPLE16 in older versions of HTTPAPI) since that calls a web service
not a web page. Seems completely unrelated to me.
As far as I can tell from your HTML, it's just asking you to submit a
really simple form to the server. Just create a form with the fields
you see in the HTML, and send it to the server.
Most of the junk in the HTML you posted is telling a browser how to
display the data on the screen. The only useful parts are these:
<FORM action="/cgi-bin/kmwwrkml" method="POST">
<INPUT type="hidden" name="kaction" value="Sign In">
<INPUT type="text" name="kmbox" maxlength="10">
<INPUT type="password" name="kpswrd" maxlength="20">
<INPUT type="submit" value="Sign In">
</FORM>
There's also a Javascript in the HTML, but all it does is verify that
the fields in the form aren't blank before you submit them, so you can
omit that Javascript without any consequence. So the above code is the
only part of the screen that does anything -- everything else is just
"how to display stuff on screen"
The above form tells me:
1) The data is submitted to the /cgi-bin/kmwwrkml program on the server.
2) The POST method is to be used to submit it.
3) The form has 3 fields named kaction, kmbox, kpswrd
4) kaction is a hidden variable always set to 'Sign In'
5) kmbox (mailbox) can be up to 10 chars long.
6) kpswrd (password) can be up to 20 chars long.
7) The submit button does not have a 'name', so no value will be
submitted for it.
So all you have to do is code the same form in your RPG program... This
is off the top of my head (I don't have access to a server with a screen
like this, so I can't possibly test it)
H DFTACTGRP(*NO) BNDDIR('HTTPAPI')
/define WEBFORMS
/copy httpapi_h
D kmbox s 10a
D kpswrd s 20a
D form s like(WEBFORM)
D rc s 10i 0
D encodedForm s *
D encodedLen s 10i 0
D QCMDEXC PR ExtPgm('QCMDEXC')
D cmd 200a const
D len 15p 5 const
D igc 3a const options(*nopass)
/free
kmbox = 'Mailbox here';
kpswrd = 'password here';
// Build a web form that mimics the sign-in screen:
Form = WEBFORM_open();
WEBFORM_setVar(form: 'kaction': 'Sign In');
WEBFORM_setVar(form: 'kmbox' : kmbox );
WEBFORM_setVar(form: 'kpswrd' : kpswrd );
WEBFORM_postData( form
: encodedForm
: encodedLen );
// Send to the server via the POST method
rc = http_post( 'http://example.com/cgi-bin/kmwwrkml'
: encodedForm
: encodedLen
: '/tmp/result.html' );
WEBFORM_close(form);
if (rc <> 1);
http_crash();
endif;
// Display the data that was sent back
// then end program
QCMDEXC('DSPF ''/tmp/result.html''': 200);
*inlr = *on;
/end-free
This is more similar to EXAMPLE2 (in old versions of HTTPAPI, or
EXAMPLE4 in the current version) than it is to the UPS tracking example.
Hopefully you understand what I'm saying... you need to understand how
the HTML works and what the browser will do with it so you can write RPG
code that does the same thing.
-----------------------------------------------------------------------
This is the FTPAPI mailing list. To unsubscribe, please go to:
http://www.scottklement.com/mailman/listinfo/ftpapi
-----------------------------------------------------------------------