[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: automated login to webpage and read resulting web page



The most recent and correct version to use is found at the following link;

http://www.scottklement.com/httpapi/beta

Do not be put out due to the beta title, it is the nmost stable and current 
version available.

Loek.

----- Original Message ----- 
From: <tim.dclinc@xxxxxxxxx>
To: "HTTPAPI and FTPAPI Projects" <ftpapi@xxxxxxxxxxxxxxxxxxxxxx>
Sent: Monday, April 02, 2012 4:53 PM
Subject: Re: automated login to webpage and read resulting web page


> Thanks for the info Scott,
>
> I dont seem to have what i need. I cant find WEBFORM_open(). I guess i
> have an older version of the http api.
>
> can you tell me where i can download the most current that would include
> the "webform" logic?
>
>
>
> On 3/30/2012 6:44 PM, Scott Klement wrote:
>> 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
>> -----------------------------------------------------------------------
>>
> -----------------------------------------------------------------------
> This is the FTPAPI mailing list.  To unsubscribe, please go to:
> http://www.scottklement.com/mailman/listinfo/ftpapi
> ----------------------------------------------------------------------- 

-----------------------------------------------------------------------
This is the FTPAPI mailing list.  To unsubscribe, please go to:
http://www.scottklement.com/mailman/listinfo/ftpapi
-----------------------------------------------------------------------