[Gambas-user] HTTP Form

T Lee Davidson t.lee.davidson at gmail.com
Tue May 17 00:20:00 CEST 2022

On 5/16/22 11:49, Gianluigi wrote:
> No, I don't mean 'opening the browser' but writing in the login form
> in order to access the site, otherwise what is the point of
> HttpForm.Add?

I didn't mean opening the browser either. I meant displaying the login form as a browser would. HttpForm is not designed to do 
that. It is not a graphical control.

The Form provided by gb.qt4 and the WebForm provided by gb.web.gui are graphical controls designed to parent other controls and 
display visually to the user.

HttpForm is merely a HTTP communication tool based on HttpClient. It displays nothing. It does not write into a form. It simply 
posts form data to a form submission handler.

The purpose of HttpForm.Add is to make it easier to format the data sent in the body of a POST operation. Look at the signature 
of HttpClient.Post:
Sub Post ( ContentType As String, Data As String [ , Headers As String[], TargetFile As String ] )

To submit a login name and a password to a form submission handler, based on this example, we would need to format the Data 
string as:
"login=myloginname&password=mypassword" ' Of course myloginname and mypassword should be the correct login credentials.

HttpForm makes it easy to craft that Data string using:
HttpForm.Add("login", "myloginname")
HttpForm.Add("password", "mypassword")

> if it were possible, I would appreciate an example where I have to
> respond in order to gain access and the code to do so:-P

If you want an application that will display a website's login form, allow you to fill it in & submit it, and then grant access 
if your credentials are correct, then use a web browser. Or, code something up with WebView (gb.qt5.webview). HttpForm will not 
do that.

 > If I reread what you write here
 >> In this example, since the location of the page containing the form and the "action" URL are the same, the server determines
 >> whether to send the HTML form or to process the form data based on the HTTP method (ie. GET or POST) used by the client.
 >> HttpForm.Submit is a POST operation.
 > It would be impossible to create in localhost a working example as I would like.
 > Did I finally understand correctly what you had explained well, and
 > what I had not grasped on first reading?

No, I don't think you did. What I wrote above, which you quoted, would be true regardless of the location of the server (local 
or remote) as long as it used the same code.

What is impossible is: To create a working example, that will display an interactive login form from a website, using HttpForm - 
that is not its purpose.

What is possible is: To programmatically post login credentials, and login, to a website using HttpForm just as it is possible 
using HttpClient.


More information about the User mailing list