To register for an Internet.com membership to receive newsletters and white papers, use the Register button ABOVE.
To participate in the message forums BELOW, click here
VBForums  

VB Wire News
Article :: Building Dynamic Systems with Expressions in .NET
How Is XML Like An Interface?
Understanding Covariance and Contravariance
Print VS 2010 Keyboard Shortcut References in Letter (8.5x11in) and A4 (210×297mm) Sizes
Updated Productivity Power Tools



Go Back   VBForums > VBForums CodeBank > CodeBank - Visual Basic 6 and earlier

Reply Post New Thread
 
Thread Tools Display Modes
Old Apr 18th, 2005, 10:37 AM   #1
visualAd
Swine Buddy
 
visualAd's Avatar
 
Join Date: Apr 02
Location: Langley, Berks, UK Mode: Restructuring
Posts: 4,833
visualAd is a splendid one to behold (700+)visualAd is a splendid one to behold (700+)visualAd is a splendid one to behold (700+)visualAd is a splendid one to behold (700+)visualAd is a splendid one to behold (700+)visualAd is a splendid one to behold (700+)visualAd is a splendid one to behold (700+)
Winsock: Making HTTP POST/GET Requests

Introduction

A question often asked is how to use Visual Basic to submit information to server side web scripts. Such as form variables. This small demonstration application shows how to accomplish this with the use of VB6 and the WinSock control.

In order to add the Winsock Control to your VB6 application, right click on the tool box, select components from the menu and check the box "Microsoft Winsock Control".

A Bit about HTTP

The Winsock control enables you to establish a connection to another computer using either TCP / UDP and transfer data over that connection. HTTP (Hypertext Transfer Protocol) is used to request and send data to web resources and it is up to the programmer to construct the HTTP request and parse the response.

There are two types of HTTP request, a POST request and a GET request. A POST request is used to send data to the server resource and a GET request is used to retrieve data from the server.

Data can also be passed to the server resource by means of a query string in both GET and POST requests. The query string is appended to the end of a URL in the form:

[http://www.domain.com/resource.php?variable1=value&variable2=value



Using the Demo Application

The demo application allows you to enter a URL and choose between a HTTP GET and HTTP POST request. The variable's section gives you the opportunity to send additional variables along with the HTTP request.

Variables
If you choose the GET method these variables will be added to the URL's query string. If you choose a POST request, they will be put into the body of the HTTP request.

Headers
The headers section allows you to add some custom HTTP headers, such as a user agent and cookies.

Sending the Request
Once the request has been sent you will be able to see the exact HTTP request sent to the server. After a short time you will also see the HTTP response.

You can test the application using the following URL:

http://adam.codedv.com/examples/post_dump.php

Attached Images
 
Attached Files
File Type: zip post_demo.ZIP (6.0 KB, 1214731 views)
__________________
PHP || MySql || Apache || Get Firefox || OpenOffice.org || Click || Slap ILMV || 1337 c0d || GotoMyPc For FREE! Part 1, Part 2

| PHP Session --> Database Handler * Custom Error Handler * Installing PHP * HTML Form Handler * PHP 5 OOP * Using XML * Ajax * Xslt | VB6 Winsock - HTTP POST / GET * Winsock - HTTP File Upload

Latest quote: crptcblade - VB6 executables can't be decompiled, only disassembled. And the disassembled code is even less useful than I am.

Random VisualAd: Blog - Latest Post: When the Internet becomes Electricity!!


Spread happiness and joy. Rate good posts.

Last edited by visualAd; May 2nd, 2005 at 05:44 AM.
visualAd is offline   Reply With Quote
Old May 6th, 2006, 02:21 AM   #2
tony007
Frenzied Member
 
Join Date: Apr 05
Posts: 1,844
tony007 is an unknown quantity at this point (<10)
Re: Winsock: Making HTTP POST/GET Requests

Many thanks for sharing this cool program with us. I tried to use your code with one of my project with involves loading url from listbox in submission variables value textbox. So i added a listbox that get populated from mysql db. I added a button so that on click it starts looping through listbox item and take each item and put it in submission variables value textbox and click send. What ever i do i can make this working with loop . I encluded the code for my click button but it never works. Could u help me fix this problem.thanks


VB Code:
  1. ' transfer all urls i loop
  2. Private Sub Command1_Click()
  3. Dim i As Long
  4. For i = 0 To List2.ListCount - 1
  5. List2.Selected(i) = True
  6. txtVariableValue(0) = List2.List(i)
  7. 'MsgBox List2.List(i)
  8. cmdSend_Click
  9. Next
  10. End Sub
tony007 is offline   Reply With Quote
Old May 6th, 2006, 03:25 AM   #3
visualAd
Swine Buddy
 
visualAd's Avatar
 
Join Date: Apr 02
Location: Langley, Berks, UK Mode: Restructuring
Posts: 4,833
visualAd is a splendid one to behold (700+)visualAd is a splendid one to behold (700+)visualAd is a splendid one to behold (700+)visualAd is a splendid one to behold (700+)visualAd is a splendid one to behold (700+)visualAd is a splendid one to behold (700+)visualAd is a splendid one to behold (700+)
Re: Winsock: Making HTTP POST/GET Requests

I am sorry, you are going to have to make yourself clearer.
__________________
PHP || MySql || Apache || Get Firefox || OpenOffice.org || Click || Slap ILMV || 1337 c0d || GotoMyPc For FREE! Part 1, Part 2

| PHP Session --> Database Handler * Custom Error Handler * Installing PHP * HTML Form Handler * PHP 5 OOP * Using XML * Ajax * Xslt | VB6 Winsock - HTTP POST / GET * Winsock - HTTP File Upload

Latest quote: crptcblade - VB6 executables can't be decompiled, only disassembled. And the disassembled code is even less useful than I am.

Random VisualAd: Blog - Latest Post: When the Internet becomes Electricity!!


Spread happiness and joy. Rate good posts.
visualAd is offline   Reply With Quote
Old May 6th, 2006, 10:03 AM   #4
tony007
Frenzied Member
 
Join Date: Apr 05
Posts: 1,844
tony007 is an unknown quantity at this point (<10)
Re: Winsock: Making HTTP POST/GET Requests

Quote:
Originally Posted by visualAd
I am sorry, you are going to have to make yourself clearer.
This is what i want to do :

tony007 is offline   Reply With Quote
Old May 6th, 2006, 12:37 PM   #5
Rich2189
Addicted Member
 
Join Date: Feb 06
Location: The Sea of Tranquility
Posts: 252
Rich2189 is an unknown quantity at this point (<10)
Re: Winsock: Making HTTP POST/GET Requests

You can also post to webpages using the inet control

Code:
Private Sub cmdAdd_Click()
Dim strUrl As String
    Dim strFormData As String
    strUrl = ""

    strFormData = "sql=SELECT  FROM  WHERE "


   
    
    Inet1.URL = strUrl
    Inet1.Execute strUrl, "post", strFormData, "Content-Type: application/x-www-form-urlencoded"
End Sub

Private Sub Inet1_StateChanged(ByVal State As Integer)
    
    
    
    Select Case State
    
    Case icConnecting
    Case icConnected
    Case icRequesting
    Case icRequestSent
    Case icReceivingResponse
    Case icResponseReceived
    
    Case icResponseCompleted
        
        Dim strTemp As String
        strTemp = Inet1.GetChunk(128)
    
        strTemp = Trim(strTemp)
        If InStr(1, strTemp, "0:") Then
            MsgBox "error: " & strTemp
        Else
            MsgBox strTemp
        End If
    
    End Select

End Sub
Where you have a post variable called sql, and obviously an online database set up. This example works fantastic with a php script i have on a server.

Rich
Rich2189 is offline   Reply With Quote
Old May 6th, 2006, 05:40 PM   #6
tony007
Frenzied Member
 
Join Date: Apr 05
Posts: 1,844
tony007 is an unknown quantity at this point (<10)
Re: Winsock: Making HTTP POST/GET Requests

Rich thank for u reply. could u be more specific how to use the code like what controles i need and ...
Your code does not post back the result of post request and also taking value from sql directly will not do what i want. Since i want to execute a list of values and sql will not be able to fetch them one by one .
Therefore i populate the values in a listbox first then i want to the process them one by one so i be happy if u show me how that can be done either your code or visualAd code.

My main goal is to be able to do the following :

In textbox1 where i put the post url such as : http://localhost/scripts/script.php

then 2 small text box(textbox1 and textbox2) one for the value i want to send to my script and and value name and a listbox,textbox4 and submit button.

I want to be able to type values in textbox1 and textbox 2 and click submit and the result get output in my textbox4.Also i want to be able to automate the process so instead of me having to type value to textbox3 which holds value to be passed to post , Instad i click on button and the program takes first item of listbox and put it in textbox3 and output the result in textbox4 and with that finishes do the same for the rest of items in listbox. The only part that i could not make it work in virutal ad project is to make it automated and so far i am not getting any help fixing it.I hope some one be kind of enough to help me here.Thanks

Note the pic above shows what i want.

Last edited by tony007; May 7th, 2006 at 12:30 AM.
tony007 is offline   Reply With Quote
Old May 7th, 2006, 04:12 AM   #7
Rich2189
Addicted Member
 
Join Date: Feb 06
Location: The Sea of Tranquility
Posts: 252
Rich2189 is an unknown quantity at this point (<10)
Re: Winsock: Making HTTP POST/GET Requests

You need to add the microsoft internet controls to your project. Well basically you post to the script and it will echo the result to the screen. This is where the getchunk method comes in, it gets the echo that the php script produces. As for the inputs, make the url = to textbox1. and sql or what ever your post variable is called = to textbox2. then stick the cmdadd code into your submit button.

Yes your best bet would be to return all your values at once to your VB program and store them in an array. Then process them one by one.

Rich
Rich2189 is offline   Reply With Quote
Old May 7th, 2006, 04:33 AM   #8
tony007
Frenzied Member
 
Join Date: Apr 05
Posts: 1,844
tony007 is an unknown quantity at this point (<10)
Re: Winsock: Making HTTP POST/GET Requests

Quote:
Originally Posted by Rich2189
You need to add the microsoft internet controls to your project. Well basically you post to the script and it will echo the result to the screen. This is where the getchunk method comes in, it gets the echo that the php script produces. As for the inputs, make the url = to textbox1. and sql or what ever your post variable is called = to textbox2. then stick the cmdadd code into your submit button.

Yes your best bet would be to return all your values at once to your VB program and store them in an array. Then process them one by one.

Rich
Could u tell me how to display what ever the post returns back to me too. This only shows me :

<form method=post action="myscript.php">
Link: <nput type ="tet" name="link2" size="35">&nbsp;
<input type="submit" value="c

The above infor is useless. For example if i want to make a post to php script i need to send value name and value data and i will get a result out that ok your file is submitted. But your code does not send value name and it only sends value data!! and also no result out in textbox!! could u show me how i can get the script output in a textbox.Thanks
tony007 is offline   Reply With Quote
Old Oct 23rd, 2006, 03:33 PM   #9
sufyaaan
Junior Member
 
Join Date: May 06
Posts: 24
sufyaaan is an unknown quantity at this point (<10)
Re: Winsock: Making HTTP POST/GET Requests

Quote:
Originally Posted by visualAd
Introduction

A question often asked is how to use Visual Basic to submit information to server side web scripts. Such as form variables. This small demonstration application shows how to accomplish this with the use of VB6 and the WinSock control.

In order to add the Winsock Control to your VB6 application, right click on the tool box, select components from the menu and check the box "Microsoft Winsock Control".

A Bit about HTTP

The Winsock control enables you to establish a connection to another computer using either TCP / UDP and transfer data over that connection. HTTP (Hypertext Transfer Protocol) is used to request and send data to web resources and it is up to the programmer to construct the HTTP request and parse the response.

There are two types of HTTP request, a POST request and a GET request. A POST request is used to send data to the server resource and a GET request is used to retrieve data from the server.

Data can also be passed to the server resource by means of a query string in both GET and POST requests. The query string is appended to the end of a URL in the form:

[http://www.domain.com/resource.php?v...ariable2=value



Using the Demo Application

The demo application allows you to enter a URL and choose between a HTTP GET and HTTP POST request. The variable's section gives you the opportunity to send additional variables along with the HTTP request.

Variables
If you choose the GET method these variables will be added to the URL's query string. If you choose a POST request, they will be put into the body of the HTTP request.

Headers
The headers section allows you to add some custom HTTP headers, such as a user agent and cookies.

Sending the Request
Once the request has been sent you will be able to see the exact HTTP request sent to the server. After a short time you will also see the HTTP response.

You can test the application using the following URL:

http://adam.codedv.com/examples/post_dump.php

It doesnt work on https sites. How can I tweak it to work on them as well?
sufyaaan is offline   Reply With Quote
Old Nov 1st, 2006, 08:45 AM   #10
DrGonzo
New Member
 
Join Date: Nov 06
Posts: 9
DrGonzo is an unknown quantity at this point (<10)
Re: Winsock: Making HTTP POST/GET Requests

HTTPS means HyperText Transfer Protocol Secure.
That is HTTP encrypted with SSL.
Due to my little knowledge i suggest you to read the Wikipedia article about HTTPS.
There you will probably find a link to the RFC or other ressources which may help you.

GERMAN: (with a graphic)
http://de.wikipedia.org/wiki/HTTPS

ENGLISH: (without any graphic)
http://en.wikipedia.org/wiki/HTTPS

Last edited by DrGonzo; Nov 1st, 2006 at 08:51 AM.
DrGonzo is offline   Reply With Quote
Old Mar 11th, 2007, 03:11 AM   #11
indianbill007
New Member
 
Join Date: Aug 05
Posts: 2
indianbill007 is an unknown quantity at this point (<10)
Re: Winsock: Making HTTP POST/GET Requests

Dear sir,
I was trying to post this form

https://login.yahoo.com/config/login?
to automatically login into the yahoo account using this project, but it gave
Invalid protocol schema error.
Can you please help me out with this.
Regards
Sumit Ghosh
Chief Software Architect
Globussoft
www.globussoft.net
indianbill007 is offline   Reply With Quote
Old Mar 11th, 2007, 07:03 AM   #12
DrGonzo
New Member
 
Join Date: Nov 06
Posts: 9
DrGonzo is an unknown quantity at this point (<10)
Re: Winsock: Making HTTP POST/GET Requests

I think because you want to access a site using HTTPS (HTTP encrypted by SSL) your program must have also implemented SSL to encrypt your HTML-data and for further communication between the client and the server.

DrGonzo is offline   Reply With Quote
Old Mar 30th, 2007, 09:02 AM   #13
feneck
Lively Member
 
feneck's Avatar
 
Join Date: Mar 07
Location: Australia, Queensland, Gympie
Posts: 85
feneck is an unknown quantity at this point (<10)
Re: Winsock: Making HTTP POST/GET Requests

Hello. Would this program be able to work for MySpace?
__________________

REMEMBER TO RATE
feneck is offline   Reply With Quote
Old Mar 30th, 2007, 10:00 AM   #14
feneck
Lively Member
 
feneck's Avatar
 
Join Date: Mar 07
Location: Australia, Queensland, Gympie
Posts: 85
feneck is an unknown quantity at this point (<10)
Re: Winsock: Making HTTP POST/GET Requests

Oh, dont worry about my last comment, i have played with it and have got it to work. thank you all very much!!!!!!!!!!
__________________

REMEMBER TO RATE
feneck is offline   Reply With Quote
Old May 27th, 2007, 06:38 AM   #15
jackmoros
New Member
 
Join Date: May 07
Posts: 15
jackmoros is an unknown quantity at this point (<10)
Re: Winsock: Making HTTP POST/GET Requests

I am trying to automatically download data from a site. In order to access some pages of the site i need to login. To login i have to submit user and password via POST. Using this form i have been able to properly login the site, setting my user and passrowd. Now how can i access the other pages of the site?
This is the response to my login, as appears in the Winsock Form Submission:

HTTP/1.1 302 Found
Date: Sun, 27 May 2007 11:39:20 GMT
Server: Apache/2.0.58 (Unix) mod_ssl/2.0.58 OpenSSL/0.9.7i
X-Powered-By: PHP/5.1.4
Expires: Thu, 19 Nov 1981 08:52:00 GMT
Cache-Control: no-store, no-cache, must-revalidate, post-check=0, pre-check=0
Pragma: no-cache
Set-Cookie: PHPSESSID=824066ab9840f2aebe9f46b402a0c5df; path=/
Set-Cookie: cookielogin=%2C3183; expires=Mon, 26-May-2008 11:39:20 GMT
Location: club.php
Vary: Accept-Encoding,User-Agent
Content-Length: 0
Connection: close

The login is successful, but now i don't know how to download data from example from the page club.php. The name of the site is: www.rugbymania.net

Thank you
jackmoros is offline   Reply With Quote
Old May 30th, 2007, 02:34 PM   #16
Pitoniso
New Member
 
Join Date: May 07
Posts: 9
Pitoniso is an unknown quantity at this point (<10)
Re: Winsock: Making HTTP POST/GET Requests

Jack i have other problem with do a keepalive connection...

Once I pass to the proxy the petition Post that I have to send to the proxy so that I don't close the connection, because I want to continue passing data, you know something about this
Pitoniso is offline   Reply With Quote
Old May 31st, 2007, 03:16 AM   #17
jackmoros
New Member
 
Join Date: May 07
Posts: 15
jackmoros is an unknown quantity at this point (<10)
Re: Winsock: Making HTTP POST/GET Requests

i'm sorry but, i didn't understand what you mean.
Could explain that again, please?
jackmoros is offline   Reply With Quote
Old Jun 1st, 2007, 02:08 PM   #18
Pitoniso
New Member
 
Join Date: May 07
Posts: 9
Pitoniso is an unknown quantity at this point (<10)
Re: Winsock: Making HTTP POST/GET Requests

I want to establish a connection among 2 programs using a single petition POST, how i could make this... that the beginning of the connection is a petition POST..
Pitoniso is offline   Reply With Quote
Old Jun 12th, 2007, 05:16 PM   #19
Trovamaster
New Member
 
Join Date: Jun 07
Posts: 2
Trovamaster is an unknown quantity at this point (<10)
Re: Winsock: Making HTTP POST/GET Requests

Hi people,

I already try the code and modified to fit my requirements.

It work very well thanks to visualAd, but i have a little problem with the control winsockt, i duno how to ensure the control propely connect or disconect.

It works great, but at some point the control dosent disconect or conecct and the code hang up, into an infinite cilce, in part 1 or part 2 (listed in the code above)

i already try a lot of things, and of course i have 2 event's that change the flags for conected or disconected, on sckts events.

i hope somebody can help to figure out this issue.

Sorry for my very bad english.

this is part of the code:

lngIndice = 1
While lngIndice <= lngCantidadArchivos

' if the conection is un use, wait until disconected
' (part 1 when the control don't disconnect propely)
If Not mbolSckConectado Then

' Here i set variables for teh file
strNombreArchivo = arsNumerosOV(lngIndice) & ".PDF"
strArchivoPDF = strDirectorio & strNombreArchivo

' here i get the contents of file
strContenidoArchivo=dfObtenerContenidoArchivo(strArchivoPDF)

' here i biuld the HTTP request
strRequisicionHTTP = dfHTTPRequest(strContenidoArchivo, udtURLDestino, strNombreArchivo, strNombreArchivo, strTipoMIME)

' here i conecct to the server, and wait until conected
' (part 2 when the control don't connect propely)
sckSitioWeb.Connect
While Not mbolSckConectado
DoEvents
Wend

' here i send the HTTP request
sckSitioWeb.SendData strRequisicionHTTP

' here i susspend the program ejecution 2 sec
dfSuspenderEjecucion 2

End If

Wend
Trovamaster is offline   Reply With Quote
Old Nov 25th, 2007, 09:16 PM   #20
Dustcrazy
New Member
 
Join Date: Sep 04
Posts: 13
Dustcrazy is an unknown quantity at this point (<10)
Re: Winsock: Making HTTP POST/GET Requests

EDITED: I fixed it

Thank you..

Last edited by Dustcrazy; Nov 25th, 2007 at 09:22 PM.
Dustcrazy is offline   Reply With Quote
Old Jun 30th, 2008, 08:19 AM   #21
Xavier09
New Member
 
Join Date: Jun 08
Posts: 2
Xavier09 is an unknown quantity at this point (<10)
Exclamation Re: Winsock: Making HTTP POST/GET Requests

Hi. I'm new to this forum and using Visual Basic. I'm currently using Visual Basic 6.0 to write my applications. I understood this small tutorial in this thread really well, but have a few questions. I'd like to know how to request a site's full HTML source code for instance www.yahoo.com without it returning only little bits of the code.


I did try requesting the page using Inet and Winsock, but for some reason it only returns half of the source code and not the full page. Is there anyway to retrieve the whole HTML source?

Any reply would be gladdy appreciated. Thanks!
Xavier09 is offline   Reply With Quote
Old Jun 30th, 2008, 10:02 AM   #22
visualAd
Swine Buddy
 
visualAd's Avatar
 
Join Date: Apr 02
Location: Langley, Berks, UK Mode: Restructuring
Posts: 4,833
visualAd is a splendid one to behold (700+)visualAd is a splendid one to behold (700+)visualAd is a splendid one to behold (700+)visualAd is a splendid one to behold (700+)visualAd is a splendid one to behold (700+)visualAd is a splendid one to behold (700+)visualAd is a splendid one to behold (700+)
Re: Winsock: Making HTTP POST/GET Requests

The problem is caused by the maximum string size in VB6. If it exceeds 32KB it is truncated; I just viewed the Yahoo source coed and it appears that it is about 50KB.

If you want to be able to use larger strings then you need to use text stream and load the data into either a rich text box or a file.
__________________
PHP || MySql || Apache || Get Firefox || OpenOffice.org || Click || Slap ILMV || 1337 c0d || GotoMyPc For FREE! Part 1, Part 2

| PHP Session --> Database Handler * Custom Error Handler * Installing PHP * HTML Form Handler * PHP 5 OOP * Using XML * Ajax * Xslt | VB6 Winsock - HTTP POST / GET * Winsock - HTTP File Upload

Latest quote: crptcblade - VB6 executables can't be decompiled, only disassembled. And the disassembled code is even less useful than I am.

Random VisualAd: Blog - Latest Post: When the Internet becomes Electricity!!


Spread happiness and joy. Rate good posts.
visualAd is offline   Reply With Quote
Old Jun 30th, 2008, 10:35 AM   #23
rich_19
New Member
 
Join Date: Jun 08
Posts: 5
rich_19 is an unknown quantity at this point (<10)
Re: Winsock: Making HTTP POST/GET Requests

Hello, as requested, I'm trying to find a simple form that will upload a file to a server using a username and password. If I can hard code the specifics and click one button, that would be great. The current form i'm using works, however, when we set up the server to use credentials, we keep gettings erros. So i'm searching for a smipler way to accomplish this. I will include the current code.



Error that is coming from the form:

"The Server returned an invalid or unrecognized response."




Error coming from the server side is:


"Invalid method in request –-Xu02=$"





(I omitted username, password, and server location)

Code:
----------------------------FORM CODE-----------------------------------




Private Sub Command1_Click()

Dim iArray

'Set your filename to upload here
iArray = Array("C:\Documents and Settings\rdstephens\Desktop\Upload.txt")

'Set path to php upload script here
Text1.Text = UploadFiles(iArray, "--------------Server Address--------------", Text2.Text, "******", "******")

End Sub









----------------------------SCRIPT CODE------------------------------------



'You need reference to Microsoft WinHTTP Services 5.0 or 5.1 to use this example

'Credit to Joseph Z. Xu ()
'Modified by Mohd Idzuan Alias () August 18, 2004
'Modified by Kung Fu Panda, Wizard of Warcraft, and The Intern, June 19, 2008


Dim WinHttpReq As WinHttp.WinHttpRequest
Const HTTPREQUEST_SETCREDENTIALS_FOR_SERVER = 0
Const HTTPREQUEST_SETCREDENTIALS_FOR_PROXY = 1
Const BOUNDARY = "Xu02=$"
Const HEADER = "--Xu02=$"
Const FOOTER = "--Xu02=$--"


Function UploadFiles(strFileName As Variant, strURL As String, Optional postVar As  String, _ Optional strUserName As String, Optional strPassword As String) As String

Dim fname As String
Dim strFile As String
Dim strBody As String
Dim aPostBody() As Byte
Dim nFile As Integer

Set WinHttpReq = New WinHttpRequest

' Turn error trapping on
On Error GoTo SaveErrHandler

' Assemble an HTTP request.
strURL = strURL & "?slots=" & CStr(UBound(strFileName) + 1) & "&" & postVar
WinHttpReq.Open "POST", strURL, False
Debug.Print strURL

If strUserName <> "" And strPassword <> "" Then
' Set the user name and password.
WinHttpReq.SetCredentials strUserName, strPassword, _
HTTPREQUEST_SETCREDENTIALS_FOR_SERVER
End If

'-------------------------- Becareful not to mingle too much here -----------------------------------

' Set the header
WinHttpReq.SetRequestHeader "Content-Type", "multipart/form-data; boundary=" & BOUNDARY

' Assemble the body
strBody = HEADER                        ' Starting tag

For i = 0 To UBound(strFileName)

' Grap the name
fname = strFileName(i)

' Grap the file
strFile = getFile(fname)

strBody = strBody & vbCrLf & "Content-Disposition: form-data; name=""" & "name" & """; filename=""" & fname & """ " & vbCrLf & "Content-type: file" & _
vbCrLf & vbCrLf & strFile & vbCrLf

If i < UBound(strFileName) Then
strBody = strBody & "--Xu02=$" ' This is boundary tag between two files
End If
strFile = ""

Next i

strBody = strBody & FOOTER             ' Ending tag
'----------------------------------------------------------------------------------------------------

' Because of binary zeros, post body has to convert to byte array
aPostBody = StrConv(strBody, vbFromUnicode)

' Send the HTTP Request.
WinHttpReq.Send aPostBody

' Display the status code and response headers.
'UploadFiles = WinHttpReq.GetAllResponseHeaders & "  " & WinHttpReq.ResponseText
UploadFiles = WinHttpReq.ResponseText

Set WinHttpReq = Nothing

Exit Function

SaveErrHandler:
UploadFiles = Err.Description

Set WinHttpReq = Nothing

End Function
Function getFile(strFileName As String) As String

Dim strFile As String

' Grap the file
nFile = FreeFile
Open strFileName For Binary As #nFile
strFile = String(LOF(nFile), " ")
Get #nFile, , strFile
Close #nFile

getFile = strFile

End Function
rich_19 is offline   Reply With Quote
Old Jun 30th, 2008, 01:59 PM   #24
visualAd
Swine Buddy
 
visualAd's Avatar
 
Join Date: Apr 02
Location: Langley, Berks, UK Mode: Restructuring
Posts: 4,833
visualAd is a splendid one to behold (700+)visualAd is a splendid one to behold (700+)visualAd is a splendid one to behold (700+)visualAd is a splendid one to behold (700+)visualAd is a splendid one to behold (700+)visualAd is a splendid one to behold (700+)visualAd is a splendid one to behold (700+)
Re: Winsock: Making HTTP POST/GET Requests

HTTP authentication is quite simple. A normal request is made to the HTTP server and it will respond with a 401 unauthorized response. The response will contain a WWW-Authenticate header which will include the authentication scheme supported and the name of the realm.

Code:
HTTP/1.1 401 Unauthorized
WWW-Authenticate: Basic realm="Authorized Users"
The client must then make a new request an authorization header. This head contains the name of the authentication scheme and a base64 encoded user name and password in the form:

Code:
' null character to separate username and password.
authorization = FunctionToBase64Encode(username & ":" & password)
The second request may look something like this:
Code:
GET /protected.html HTTP/1.0
Host: www.example.com
Authorization: Basic dmlzdWFsYWQ6c2VjcmV0
You can pick some source code up for a Base64 encoder / decoder easily from a Google search. Other authentication schemes include digest and NTLM. Digest is relatively simple to implement however, NTLM is largely undocumented and insecure for use over the Internet.
__________________
PHP || MySql || Apache || Get Firefox || OpenOffice.org || Click || Slap ILMV || 1337 c0d || GotoMyPc For FREE! Part 1, Part 2

| PHP Session --> Database Handler * Custom Error Handler * Installing PHP * HTML Form Handler * PHP 5 OOP * Using XML * Ajax * Xslt | VB6 Winsock - HTTP POST / GET * Winsock - HTTP File Upload

Latest quote: crptcblade - VB6 executables can't be decompiled, only disassembled. And the disassembled code is even less useful than I am.

Random VisualAd: Blog - Latest Post: When the Internet becomes Electricity!!


Spread happiness and joy. Rate good posts.
visualAd is offline   Reply With Quote
Old Jul 1st, 2008, 09:49 AM   #25
rich_19
New Member
 
Join Date: Jun 08
Posts: 5
rich_19 is an unknown quantity at this point (<10)
Re: Winsock: Making HTTP POST/GET Requests

I sort of understand what you are saying, but not sure I could implement that into a working form. So if the above code won't work, do you know of a simpler program that I can input the server, username, and password, that will work?
rich_19 is offline   Reply With Quote
Old Jul 1st, 2008, 10:21 AM   #26
visualAd
Swine Buddy
 
visualAd's Avatar
 
Join Date: Apr 02
Location: Langley, Berks, UK Mode: Restructuring
Posts: 4,833
visualAd is a splendid one to behold (700+)visualAd is a splendid one to behold (700+)visualAd is a splendid one to behold (700+)visualAd is a splendid one to behold (700+)visualAd is a splendid one to behold (700+)visualAd is a splendid one to behold (700+)visualAd is a splendid one to behold (700+)
Re: Winsock: Making HTTP POST/GET Requests

Quote:
Originally Posted by rich_19
I sort of understand what you are saying, but not sure I could implement that into a working form. So if the above code won't work, do you know of a simpler program that I can input the server, username, and password, that will work?
That is simple , you just need to modify the application to include the extra headers.
__________________
PHP || MySql || Apache || Get Firefox || OpenOffice.org || Click || Slap ILMV || 1337 c0d || GotoMyPc For FREE! Part 1, Part 2

| PHP Session --> Database Handler * Custom Error Handler * Installing PHP * HTML Form Handler * PHP 5 OOP * Using XML * Ajax * Xslt | VB6 Winsock - HTTP POST / GET * Winsock - HTTP File Upload

Latest quote: crptcblade - VB6 executables can't be decompiled, only disassembled. And the disassembled code is even less useful than I am.

Random VisualAd: Blog - Latest Post: When the Internet becomes Electricity!!


Spread happiness and joy. Rate good posts.
visualAd is offline   Reply With Quote
Old Jul 1st, 2008, 10:45 AM   #27
Xavier09
New Member
 
Join Date: Jun 08
Posts: 2
Xavier09 is an unknown quantity at this point (<10)
Re: Winsock: Making HTTP POST/GET Requests

Quote:
Originally Posted by visualAd
The problem is caused by the maximum string size in VB6. If it exceeds 32KB it is truncated; I just viewed the Yahoo source coed and it appears that it is about 50KB.

If you want to be able to use larger strings then you need to use text stream and load the data into either a rich text box or a file.

Hey sorry, I got so lost in the code that I forgot to come back and say thanks. I loaded the data into the rich text box and it worked out perfectly. So ya, thanks.
Xavier09 is offline   Reply With Quote
Old Jul 5th, 2008, 03:26 PM   #28
angel.girl
Banned
 
Join Date: Mar 08
Posts: 24
angel.girl is an unknown quantity at this point (<10)
Re: Winsock: Making HTTP POST/GET Requests

How can i use Cookies
I Mean i been done Login Packet Its workin HTTP
now i want took cookies and replce and i can use other packet too with these cookies
if someone know expln thanks
angel.girl is offline   Reply With Quote
Old Jul 5th, 2008, 04:50 PM   #29
visualAd
Swine Buddy
 
visualAd's Avatar
 
Join Date: Apr 02
Location: Langley, Berks, UK Mode: Restructuring
Posts: 4,833
visualAd is a splendid one to behold (700+)visualAd is a splendid one to behold (700+)visualAd is a splendid one to behold (700+)visualAd is a splendid one to behold (700+)visualAd is a splendid one to behold (700+)visualAd is a splendid one to behold (700+)visualAd is a splendid one to behold (700+)
Re: Winsock: Making HTTP POST/GET Requests

You will see a Set-Cookie header in the HTTP response. The next request you make should contain the name and the value of the cookie in a cookie header.
Code:
Request:

GET / HTTP/1.0

Response:

HTTP/1.0 200 OK
Set-cookie: cookie1=value1; domain=www.example.com; path=/blah
Set-Cookie: cookie2=value2; path=/

Next Request:

GET /blah/index.html HTTP/1.0
Cookie: cookie1=value1; cookie2=value2
__________________
PHP || MySql || Apache || Get Firefox || OpenOffice.org || Click || Slap ILMV || 1337 c0d || GotoMyPc For FREE! Part 1, Part 2

| PHP Session --> Database Handler * Custom Error Handler * Installing PHP * HTML Form Handler * PHP 5 OOP * Using XML * Ajax * Xslt | VB6 Winsock - HTTP POST / GET * Winsock - HTTP File Upload

Latest quote: crptcblade - VB6 executables can't be decompiled, only disassembled. And the disassembled code is even less useful than I am.

Random VisualAd: Blog - Latest Post: When the Internet becomes Electricity!!


Spread happiness and joy. Rate good posts.
visualAd is offline   Reply With Quote
Old Aug 28th, 2008, 04:07 AM   #30
batori
Hyperactive Member
 
Join Date: Aug 08
Posts: 261
batori is an unknown quantity at this point (<10)
Re: Winsock: Making HTTP POST/GET Requests

hi,well this is a great post but i got a question

well when i do the operation with your tool i get the code,then i paste it to a text file and then rename it to .html.Then i open the file and i get the page i wanted and it says that im logged in (which is great ) and then automatically it takes me to my documents (which is not so important)

Then i copied the code that your tool produced

Code:
http://www.testforum.org/login.php?username=batori&password=batori&autologin=on&login=Log%2Bin
and i pasted it in here

Code:
Private Declare Function ShellExecute Lib "shell32.dll" Alias "ShellExecuteA" (ByVal hwnd As Long, ByVal lpOperation As String, ByVal lpFile As String, ByVal lpParameters As String, ByVal lpDirectory As String, ByVal nShowCmd As Long) As Long

Private Sub Form_Load()

Call ShellExecute(0&, vbNullString, "http://www.forum.org/login.php?username=batori&password=batori&autologin=on&login=Log%2Bin", vbNullString, vbNullString, vbNormalFocus)

End Sub
then my browser open and then i get the message that the specified account does not exist??? hmmmm

I tought the reason could be the cookies...
because after i login i must go automatically to a new thread and post the text into a REPLY THREAD and click SUBMIT automatically...

Last edited by batori; Sep 11th, 2008 at 03:57 AM.
batori is offline   Reply With Quote
Old Aug 28th, 2008, 04:36 AM   #31
visualAd
Swine Buddy
 
visualAd's Avatar
 
Join Date: Apr 02
Location: Langley, Berks, UK Mode: Restructuring
Posts: 4,833
visualAd is a splendid one to behold (700+)visualAd is a splendid one to behold (700+)visualAd is a splendid one to behold (700+)visualAd is a splendid one to behold (700+)visualAd is a splendid one to behold (700+)visualAd is a splendid one to behold (700+)visualAd is a splendid one to behold (700+)
Re: Winsock: Making HTTP POST/GET Requests

I am not sure what you want to achieve but I if you had copied and pasted it, then surely the passwords wouldn't be different and the website would be the same . Do you want to post passwords to a web site on a public forum too?

Anyhow, it looks like the error you are getting is caused by the fact that the account does not exist on the forum.
__________________
PHP || MySql || Apache || Get Firefox || OpenOffice.org || Click || Slap ILMV || 1337 c0d || GotoMyPc For FREE! Part 1, Part 2

| PHP Session --> Database Handler * Custom Error Handler * Installing PHP * HTML Form Handler * PHP 5 OOP * Using XML * Ajax * Xslt | VB6 Winsock - HTTP POST / GET * Winsock - HTTP File Upload

Latest quote: crptcblade - VB6 executables can't be decompiled, only disassembled. And the disassembled code is even less useful than I am.

Random VisualAd: Blog - Latest Post: When the Internet becomes Electricity!!


Spread happiness and joy. Rate good posts.
visualAd is offline   Reply With Quote
Old Aug 28th, 2008, 04:50 AM   #32
batori
Hyperactive Member
 
Join Date: Aug 08
Posts: 261
batori is an unknown quantity at this point (<10)
Re: Winsock: Making HTTP POST/GET Requests

well, when i get this code :

this is the request
Code:
POST /login.php HTTP/1.0
Host: testforum.org
Content-Type: application/x-www-form-urlencoded
Content-Length: 59

username=batori&password=batori&autologin=on&login=Log%2Bin
and i just used this in my app and i got the error that the account does not exists.i wanted to open this code in the url like i posted before.but it doesnt work
Code:
username=batori&password=batori&autologin=on&login=Log%2Bin
but when i generated the code with your app...i pasted that in a html file and i opened it and i was successfully logged in...

so now im askin..is this not woking in my case because i just tried to open that url
Code:
www.testforum.org/login.php?username=batori&password=batori&autologin=on&login=Log%2Bin
instead of sending

Code:
POST /login.php HTTP/1.0
Host: testforum.org
Content-Type: application/x-www-form-urlencoded
Content-Length: 59

username=batori&password=batori&autologin=on&login=Log%2Bin
batori is offline   Reply With Quote
Old Aug 28th, 2008, 06:43 AM   #33
visualAd
Swine Buddy
 
visualAd's Avatar
 
Join Date: Apr 02
Location: Langley, Berks, UK Mode: Restructuring
Posts: 4,833
visualAd is a splendid one to behold (700+)visualAd is a splendid one to behold (700+)visualAd is a splendid one to behold (700+)visualAd is a splendid one to behold (700+)visualAd is a splendid one to behold (700+)visualAd is a splendid one to behold (700+)visualAd is a splendid one to behold (700+)
Re: Winsock: Making HTTP POST/GET Requests

I suggest you read up a little on the HTTP protocol. The application I wrote shows you the HTTP request. It is a post request and the url encoded data is sent in the body of the HTTP request (as shown by the application).

You cannot append the data to the end of a URL and expect it to work. Not only this, the sites you are using have two different forum packages that likely accept login information in a different format, so even if the above were possible, it would probably still fail.
__________________
PHP || MySql || Apache || Get Firefox || OpenOffice.org || Click || Slap ILMV || 1337 c0d || GotoMyPc For FREE! Part 1, Part 2

| PHP Session --> Database Handler * Custom Error Handler * Installing PHP * HTML Form Handler * PHP 5 OOP * Using XML * Ajax * Xslt | VB6 Winsock - HTTP POST / GET * Winsock - HTTP File Upload

Latest quote: crptcblade - VB6 executables can't be decompiled, only disassembled. And the disassembled code is even less useful than I am.

Random VisualAd: Blog - Latest Post: When the Internet becomes Electricity!!


Spread happiness and joy. Rate good posts.
visualAd is offline   Reply With Quote
Old Aug 28th, 2008, 07:12 AM   #34
batori
Hyperactive Member
 
Join Date: Aug 08
Posts: 261
batori is an unknown quantity at this point (<10)
Re: Winsock: Making HTTP POST/GET Requests

ah well ok...becaus a friend managed to do something like that in delphi in a veery small piece od code...
Code:
http://www.vbforums.com/showthread.php?t=537443
batori is offline   Reply With Quote
Old Aug 28th, 2008, 05:33 PM   #35
indianeagle
New Member
 
Join Date: Aug 08
Posts: 2
indianeagle is an unknown quantity at this point (<10)
Exclamation Re: Winsock: Making HTTP POST/GET Requests

thanks sir 4 ur demo example...
i leared too much from that
altho it took almost 6 hrs to understand whole program
bt fianlly got success in making a simple sending data by POST method.. same as i wanted

now my doubts r as follows --

1.in second text box i wana get Message..
for that i need txt box to be of multiline
but wen i post data with multiline property 'true' it started showing sum chr like %D%A etc.. also its behaviour is strange for sum keys like "",',%,& etc.... they doesnt get psoted in same manner.... wat php code sud be used to get them properly
2. how much size of msg can b posted... means if i want 5mb text then will it support... or will crash?
3. wat does (htmlspecialchars($name)) signifies in ur php file?
4. i learned to use POST function using winsock .. bt can it also be possible using inet control... if yes than which one is btr?
5. wat does ur following code mean for.. n to get decode these changes in php file (m nt concerning to decode in VB)

Code:
' ' url encodes a string
Function URLEncode(ByVal str As String) As String
        Dim intLen As Integer
        Dim X As Integer
        Dim curChar As Long
                Dim newStr As String
                intLen = Len(str)
        newStr = ""
                        For X = 1 To intLen
            curChar = Asc(Mid$(str, X, 1))
            
            If (curChar < 48 Or curChar > 57) And _
                (curChar < 65 Or curChar > 90) And _
                (curChar < 97 Or curChar > 122) Then
                                newStr = newStr & "%" & Hex(curChar)
            Else
                newStr = newStr & Chr(curChar)
            End If
        Next X
        
        URLEncode = newStr
End Function
hope u get all my doubts
thx

Last edited by indianeagle; Aug 29th, 2008 at 07:50 AM.
indianeagle is offline   Reply With Quote
Old Aug 29th, 2008, 01:24 AM   #36
indianeagle
New Member
 
Join Date: Aug 08
Posts: 2
indianeagle is an unknown quantity at this point (<10)
Re: Winsock: Making HTTP POST/GET Requests

sorry 4 cretaing new post...
it created by mistake
and now m nt getting delete option

Last edited by indianeagle; Aug 29th, 2008 at 07:55 AM.
indianeagle is offline   Reply With Quote
Old Aug 30th, 2008, 12:50 AM   #37
ck_y
New Member
 
Join Date: Feb 06
Posts: 9
ck_y is an unknown quantity at this point (<10)
Re: Winsock: Making HTTP POST/GET Requests

ok but how do you submit a file as in the example here
Quote:
Sending the Request
Once the request has been sent you will be able to see the exact HTTP request sent to the server. After a short time you will also see the HTTP response.

You can test the application using the following URL:

http://adam.codedv.com/examples/post_dump.php

the page here shows a file input box that is file1
useing the program and sampel source if you supply file1 with an path and file it shows as a varable that was included not as a file that was submited and is there a work around to this to simply submit a file from a url string?????

i have been unabel to find anythign besides a web page that will work with

<form action="/cgi-bin/upload.cgi" method="post" enctype="multipart/form-data">
<input type="File" name="FILE1" size="20">
<p>
<input type="Submit" value="submit">
</form>
ck_y is offline   Reply With Quote
Old Sep 23rd, 2008, 07:53 PM   #38
kal_leo@hotmail.com
New Member
 
Join Date: Sep 08
Posts: 2
kal_leo@hotmail.com is an unknown quantity at this point (<10)
Re: Winsock: Making HTTP POST/GET Requests

Hi friends I have alike problem.

what I want to do is I want to login a web page from my vb program
and I don't know how to login. I am not the web master or owner of the site, just a member and I want to login from my vb form.

I want to pass parameters my username and password.

can somebody pls help me out. I need this badly.

Thanks in advance.

Kal

Last edited by kal_leo@hotmail.com; Sep 24th, 2008 at 09:21 AM.
kal_leo@hotmail.com is offline   Reply With Quote
Old Sep 24th, 2008, 02:29 AM   #39
visualAd
Swine Buddy
 
visualAd's Avatar
 
Join Date: Apr 02
Location: Langley, Berks, UK Mode: Restructuring
Posts: 4,833
visualAd is a splendid one to behold (700+)visualAd is a splendid one to behold (700+)visualAd is a splendid one to behold (700+)visualAd is a splendid one to behold (700+)visualAd is a splendid one to behold (700+)visualAd is a splendid one to behold (700+)visualAd is a splendid one to behold (700+)
Re: Winsock: Making HTTP POST/GET Requests

Please start you own thread for support on issues not relating to the above program.
__________________
PHP || MySql || Apache || Get Firefox || OpenOffice.org || Click || Slap ILMV || 1337 c0d || GotoMyPc For FREE! Part 1, Part 2

| PHP Session --> Database Handler * Custom Error Handler * Installing PHP * HTML Form Handler * PHP 5 OOP * Using XML * Ajax * Xslt | VB6 Winsock - HTTP POST / GET * Winsock - HTTP File Upload

Latest quote: crptcblade - VB6 executables can't be decompiled, only disassembled. And the disassembled code is even less useful than I am.

Random VisualAd: Blog - Latest Post: When the Internet becomes Electricity!!


Spread happiness and joy. Rate good posts.
visualAd is offline   Reply With Quote
Old Oct 28th, 2008, 01:46 PM   #40
batori
Hyperactive Member
 
Join Date: Aug 08
Posts: 261
batori is an unknown quantity at this point (<10)
Re: Winsock: Making HTTP POST/GET Requests

Great post ... i already learned some stuff with your app...

But i was wondering...
Once that i got all the cookie data and stuff with logging in...

How do i manage to send that cookie data with another post request?
I tried with inet1.execute.... but wont work


Thanks again for this tutorial
batori is offline   Reply With Quote
Reply

Go Back   VBForums > VBForums CodeBank > CodeBank - Visual Basic 6 and earlier


Currently Active Users Viewing This Thread: 1 (0 members and 1 guests)
 
Thread Tools
Display Modes

Posting Rules
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

BB code is On
Smilies are On
[IMG] code is On
HTML code is Off

Forum Jump


All times are GMT -5. The time now is 07:56 PM.





Acceptable Use Policy

Internet.com
The Network for Technology Professionals

Search:

About Internet.com

Legal Notices, Licensing, Permissions, Privacy Policy.
Advertise | Newsletters | E-mail Offers

Powered by vBulletin® Version 3.8.1
Copyright ©2000 - 2010, Jelsoft Enterprises Ltd.