• Status: Solved
  • Priority: Medium
  • Security: Public
  • Views: 2298
  • Last Modified:

Http post using MS-Access and VBA

I'm writing an Access application that is using a webrelay. A webrelay is a device which can switch electrical equipment on- and off and has it's own build in webserver.

I can control this device with my browser using the following URL:

http://192.168.1.200/?OUT1=ON

Now I would like to post the same URL when I click a button on a MS-Access form.

Please send me some sample code !
0
HugoMuller
Asked:
HugoMuller
1 Solution
 
Rgonzo1971Commented:
Hi,

pls try

Sub PostHttp()
Dim result As String
Dim myURL As String, postData As String
Dim HttpReq As Object
Set HttpReq = CreateObject("WinHttp.WinHttpRequest.5.1")
myURL = "http://192.168.1.200"
postData = "/?OUT1=ON"
HttpReq.Open "POST", myURL, False
HttpReq.Send (postData)
result = HttpReq.responseText
End Sub

Open in new window

regards
0
 
Jim Dettman (Microsoft MVP/ EE MVE)PresidentCommented:
Below is some code that uses the Microsoft XML 6. Library to sent a HTTP POST request.

Jim.

                  ' Capture the CC

                  ' Set the correct URL
                  'strPostURL = "https://test.authorize.net/gateway/transact.dll"
110               strPostURL = "https://secure.authorize.net/gateway/transact.dll"
                  'strPostURL = "https://developer.authorize.net/tools/paramdump/index.php"

120               strPostSting = ""
125        strPostSting = strPostSting & "x_login=" & URLEncode(strAPILogin) & "&"
126       strPostSting = strPostSting & "x_tran_key=" & URLEncode(strTransactionKey) & "&"
                  'For debugging.
                  'strPostSting = strPostSting & "x_test_request=" & URLEncode("TRUE") & "&"
130               strPostSting = strPostSting & "x_version=" & URLEncode("3.1") & "&"
140               strPostSting = strPostSting & "x_delim_data=" & URLEncode("TRUE") & "&"
150               strPostSting = strPostSting & "x_delim_char=" & URLEncode("|") & "&"
160               strPostSting = strPostSting & "x_relay_response=" & URLEncode("FALSE") & "&"
170               strPostSting = strPostSting & "x_email_customer=" & URLEncode("FALSE") & "&"

180               strPostSting = strPostSting & "x_type=" & URLEncode("PRIOR_AUTH_CAPTURE") & "&"
190               strPostSting = strPostSting & "x_trans_id=" & URLEncode(rs!CCTransactionID) & "&"

                  ' Additional fields can be added here as outlined in the AIM integration
                  ' guide at: http://developer.authorize.net
200               strPostSting = left(strPostSting, Len(strPostSting) - 1)

                  ' We use xmlHTTP to submit the input values and record the response
                  Dim objRequest As New MSXML2.XMLHTTP
210               objRequest.Open "POST", strPostURL, False
220               objRequest.Send strPostSting
230               strPostResponse = objRequest.responseText
                  'Debug.Print strPostResponse
240               Set objRequest = Nothing

                  ' the response string is broken into an array using the specified delimiting character
250               arrResponse = Split(strPostResponse, "|", -1)

260               If arrResponse(0) = 1 Then
0
 
Jim Dettman (Microsoft MVP/ EE MVE)PresidentCommented:
URLEncode() BTW is:

Public Function URLEncode(xxx As String) As String

    URLEncode = Replace(xxx, " ", "%20")

End Function

Jim.
0
VIDEO: THE CONCERTO CLOUD FOR HEALTHCARE

Modern healthcare requires a modern cloud. View this brief video to understand how the Concerto Cloud for Healthcare can help your organization.

 
IrogSintaCommented:
You can give this a try:
If you are using a toggle button on your form
Private Sub tglOnOff_AfterUpdate()
    Dim ie As Object
    
    'switch webrelay device on or off 
    Set ie = New InternetExplorer
        ie.Navigate "http://192.168.1.200/?OUT1=" & IIf(Me.Toggle15, "ON", "OFF")
        While ie.Busy = True: DoEvents: Wend
        While ie.Busy = True: DoEvents: Wend
        ie.Quit
    Set ie = Nothing
    
End Sub

Open in new window

If you are using 2 separate buttons for ON and OFF
Private Sub btnSwitchOn_Click()
    Dim ie As Object
    
     'switch webrelay device on
    Set ie = New InternetExplorer
        ie.Navigate "http://192.168.1.200/?OUT1=ON"
        While ie.Busy = True: DoEvents: Wend
        While ie.Busy = True: DoEvents: Wend
        ie.Quit
    Set ie = Nothing
    
End Sub

Private Sub btnSwitchOff_Click()
    Dim ie As Object
    
    'switch webrelay device off
    Set ie = New InternetExplorer
        ie.Navigate "http://192.168.1.200/?OUT1=OFF"
        While ie.Busy = True: DoEvents: Wend
        While ie.Busy = True: DoEvents: Wend
        ie.Quit
    Set ie = Nothing
    
End Sub

Open in new window

Ron
0
 
HugoMullerAuthor Commented:
Hi Ron,

I like simple solutions so I think you;ll get the points.
One question: why do you repeat the While Wend line. Is there a specific reason ?

Cheers, Hugo
0
 
IrogSintaCommented:
Sorry, I just copied that from some old code I had.  I noticed back then that using a single Do Event loop somehow still allowed the code to continue even though the ie object was still busy.  Doubling it up solved the problem for us.  Since then; however, I have been using the following line of code instead and you can use it in place of the While Wend loops.

Do While ie.Busy Or ie.readyState <> READYSTATE_COMPLETE
    DoEvents
Loop

Open in new window

Ron
0
 
IrogSintaCommented:
Hugo,
      I'm not sure if you're aware of the criteria for grading.  You would normally assign a B grade if you had to do a good amount of extra work on your own because the answer presented was lacking.  You are also expected to provide an explanation on grades of B or C.  
     If you were still having difficulties with a provided solution, you could have followed it up here until you were satisfied.

     Here's a link explaining the Grading criteria:  http://support.experts-exchange.com/customer/portal/articles/481419-what-grade-should-i-award-?b_id=44

Ron
0

Featured Post

Free Tool: IP Lookup

Get more info about an IP address or domain name, such as organization, abuse contacts and geolocation.

One of a set of tools we are providing to everyone as a way of saying thank you for being a part of the community.

Tackle projects and never again get stuck behind a technical roadblock.
Join Now