Jump to content
Sign in to follow this  

POST to a web page

Recommended Posts


This is probably borderline whether it is really AutoIt related or not.

I have used slightly modified versions of this func to send data to a web page using POST before, without any troubles. For some reason, I cannot make it work this time.

Hopefully, I am just missing a typo somewhere.

Func _SendPing()
    Local $servername = "myservername"
    Local $serverport = 80
    Local $ipconnection = -1
    Local $i, $r, $s, $t

    $t = ""
    For $i = 0 To (UBound($SysInfo, 1) - 1)
        $t &= "&" & $SysInfo[$i][0] & "=" & _UnicodeURLEncode($SysInfo[$i][1])
    $s = "POST /feedback/callhome.php HTTP/1.1" & @CRLF
    $s &= "Host: " & $servername & ":" & $serverport & @CRLF
    $s &= "From: " & @UserName & "@" & @ComputerName & @CRLF
    $s &= "User-Agent: DataPull/2.0" & @CRLF ;let the server logs show that this is an automated entry rather than manually done
    $s &= "Content-Type: application/x-www-form-urlencoded" & @CRLF
    $s &= "Content-Length: " & StringLen($t) & @CRLF & @CRLF
    $s &= $t

    $ipconnection = TCPConnect(TCPNameToIP($servername), $serverport)
    $r = TCPSend($ipconnection, $s)
EndFunc   ;==>_sendping

_UnicodeURLEncode() is from Dhilip89's UDF

$SysInfo is a 2 dimensional array in the form of ["variable_name", "data"]. variable_name coincides with form variables if the page were pulled up for manual data entry.

Share this post

Link to post
Share on other sites

Put in a debug line to display or log $s to a file just before it gets used in TCPSend(). That should allow you to see where it fails. You didn't mention any failing symptoms or indications.


Valuater's AutoIt 1-2-3, Class... Is now in Session!For those who want somebody to write the script for them: RentACoder"Any technology distinguishable from magic is insufficiently advanced." -- Geek's corollary to Clarke's law

Share this post

Link to post
Share on other sites

Sorry, I should have included that to begin with.

$s contains:

POST /feedback/callhome.php HTTP/1.1

Host: myservername:80

From: userlogin@usermachine

User-Agent: DataPull/2.0

Content-Type: application/x-www-form-urlencoded

Content-Length: 1586


(confidential information stripped out. Actual content section confirmed to be 1586 characters.)

The web page only returns the date/time the information was received, whether it succeeded or not. The only indication I have whether the POST worked or not is to run the reports for the database, and see if the information is there. So far, I have not been able to make it work for this page.

This is an old internal web page that a client has, that was set up to make their inventory process easier. {{{re-emphasize OLD}}}

I am not being given any control or access to the web server (I think someone is trying to hold onto a "perceived" job security), so I am trying to automate, as much as possible, the inventory process on the client side, and inject the data into the server. Since I want this to run silently with the login script, and since I don't care about what the page returns, I am using POST rather than trying to actually automate the page. I also want the server logs to show how much more/better data is being collected via my script than by the old manual inventory process.

Share this post

Link to post
Share on other sites

Do you call TCPStartup before that function?




Share this post

Link to post
Share on other sites

Do you call TCPStartup before that function?


. . . after the repeated sound of a head banging on a desk . . .

I knew it had to be some simple thing I left out.


Share this post

Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
Sign in to follow this