Please help a newbie

Posted on 2000-05-07
Medium Priority
Last Modified: 2010-05-02
Hi guys, Newbie here,

I am using Visual Basic 6.0(SP3) and am using the inet.execute "POST" function to send some name=value pair variables to a VB CGI script. I didn't write the CGI script but this is what it looks like to get the input


Public Function CGIStdIn() As String

Dim lngStdInput As Long                 ' Handle of Standard Input
Dim strStdInput As String               ' String of Standard Input
Dim lngNumberOfBytesToRead As Long      ' Number of bytes in standard input
Dim lngNumberOfBytesRead As Long        ' Number of bytes read in standard input
Dim typOverlapped As OVERLAPPED         ' Structure used in ReadFile() function call
Dim lngResult As Long                   ' Did Standard Input Work?

    On Error Resume Next
    lngStdInput = GetStdHandle(STD_INPUT_HANDLE)    ' Get standard input handle
    CGIStdIn = ""
    If lngStdInput > -1 Then                        ' If a valid handle was found

' Find out how big the input stream is

        lngNumberOfBytesToRead = CLng(Environ("CONTENT_LENGTH"))
' Initialize string variable to store the standard input stream

        strStdInput = String(lngNumberOfBytesToRead, " ")
        lngResult = ReadFile(lngStdInput, strStdInput, lngNumberOfBytesToRead, _
                        lngNumberOfBytesRead, typOverlapped)
        strStdInput = RTrim(strStdInput)            ' Get rid of any trailing spaces
        CGIStdIn = strStdInput       ' Return standard input stream
    End If

    If CGIStdIn <> "" Then
' Add the tail of the string if <CR> was hit instead of the login button
        If Right(CGIStdIn, 1) <> "&" Then
            CGIStdIn = CGIStdIn & "&Login_Submit=Login"
        End If
    End If

End Function


Now here's the problem, it works fine when you push the login button from the browser, but when I try to use my VB application to post info to the script, all I get is a No response timeout. Can anyone help me with a reason why the VB CGI script does not like this POST?

I'm pretty sure my code should work, all indications from examples suggest it should.

Private Sub cmdPOST_Click()
   picTic.Visible = True
   txtData.Text = ""
   Dim fnum As Integer
   Dim file_name As String
   Dim got_file As Boolean
   Dim txt As String

    ' Get the file's name.
    file_name = App.Path
    If Right$(file_name, 1) <> "\" Then file_name = file_name & "\"
    file_name = file_name & "logins.txt"
    ' Open the file.
    fnum = FreeFile
    On Error Resume Next
    Open file_name For Input As fnum
    got_file = (Err.Number = 0)
    On Error GoTo 0

    If got_file Then
        ' Read the text.
        Do Until EOF(fnum)
        Dim i As Integer
        Dim sArray As Variant
            Input #fnum, txt
            sArray = Split(txt)
            txtRemotePath.Text = "MNO=" & sArray(0) & "&PWD=" & sArray(1) _
            & "&BSB=NTV25"
        ' Close the file.
    Close fnum
    End If
   Inet1.Execute txtURL.Text, "POST", txtRemotePath.Text, _
   "enctype: application/x-www-form-urlencoded"
    Exit Sub

End Sub

Thanks in advance
Question by:GnatMan
Welcome to Experts Exchange

Add your voice to the tech community where 5M+ people just like you are talking about what matters.

  • Help others & share knowledge
  • Earn cash & points
  • Learn & ask questions
  • 2
  • 2
LVL 32

Accepted Solution

Erick37 earned 300 total points
ID: 2787032
The method you are using looks OK.  Perhaps there is something wrong with the parameters.  Try hardcoding the URL and post data to see if this is the case.  I tried a POST to Altavista, and it seems to work fine:

Option Explicit

Private Sub Command1_Click()
    Dim sURL As String, sPost As String, sHeader As String
    sURL = "http://www.altavista.com/cgi-bin/query"
    sPost = "pg=q&sc=on&hl=on&q=%2Bvb&kl=XX&stype=stext"
    sHeader = "Content-Type: application/x-www-form-urlencoded"
    Inet1.Execute sURL, "POST", sPost, sHeader
    Command1.Enabled = False
End Sub

Private Sub Form_Load()
    'RichTextBox (rtb) for reading response
    rtb.RightMargin = Screen.Width * 2
    rtb.Left = 0
    ''Set at design time
    ''rtb.ScrollBars = rtfBoth
End Sub

Private Sub Form_Resize()
    rtb.Width = ScaleWidth
End Sub

Private Sub Inet1_StateChanged(ByVal State As Integer)
    Select Case State
    Case icResponseCompleted ' 12
        Dim vtData As Variant ' Data variable.
        Dim strData As String: strData = ""
        Dim bDone As Boolean: bDone = False
        ' Get first chunk.
        vtData = Inet1.GetChunk(1024, icString)
        Do While Not bDone
            strData = strData & vtData
            ' Get next chunk.
            vtData = Inet1.GetChunk(1024, icString)
            If Len(vtData) = 0 Then
                bDone = True
            End If
        rtb.Text = strData
        Command1.Enabled = True
   End Select
End Sub

Author Comment

ID: 2787053
Thanks for the suggestion, I hardcoded in the parameters for the POST and it didn't seem to do much good though. Any further help from anyone would be just swell..
LVL 32

Expert Comment

ID: 2787215
Does the site work if you type in the POST directly into the address bar of your Browser?



Author Comment

ID: 2787338
I've tried that, it doesn't work either, that's using the GET method though isn't it? Isn't the CGI VB script grabbing the info from STDinput from POSTed data?


Featured Post

On Demand Webinar - Networking for the Cloud Era

This webinar discusses:
-Common barriers companies experience when moving to the cloud
-How SD-WAN changes the way we look at networks
-Best practices customers should employ moving forward with cloud migration
-What happens behind the scenes of SteelConnect’s one-click button

Question has a verified solution.

If you are experiencing a similar issue, please ask a related question

There are many ways to remove duplicate entries in an SQL or Access database. Most make you temporarily insert an ID field, make a temp table and copy data back and forth, and/or are slow. Here is an easy way in VB6 using ADO to remove duplicate row…
Article by: Martin
Here are a few simple, working, games that you can use as-is or as the basis for your own games. Tic-Tac-Toe This is one of the simplest of all games.   The game allows for a choice of who goes first and keeps track of the number of wins for…
As developers, we are not limited to the functions provided by the VBA language. In addition, we can call the functions that are part of the Windows operating system. These functions are part of the Windows API (Application Programming Interface). U…
This lesson covers basic error handling code in Microsoft Excel using VBA. This is the first lesson in a 3-part series that uses code to loop through an Excel spreadsheet in VBA and then fix errors, taking advantage of error handling code. This l…
Suggested Courses

770 members asked questions and received personalized solutions in the past 7 days.

Join the community of 500,000 technology professionals and ask your questions.

Join & Ask a Question