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

Re: automated login to webpage and read resulting web page



thank you :)

On 4/2/2012 11:24 AM, Loek Maartens wrote:
> 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
> -----------------------------------------------------------------------
>
-----------------------------------------------------------------------
This is the FTPAPI mailing list.  To unsubscribe, please go to:
http://www.scottklement.com/mailman/listinfo/ftpapi
-----------------------------------------------------------------------