Peter
Peter

Reputation: 55

Vbscript Get proxy config for WinINET API

I'm trying to send a HTTP get to an internal webserver and this works fine unless due to rerouting reasons, a user has to traverse a proxy in order to get to the webserver, then I just get a WinInet 12029 error of "ERROR_INTERNET_CANNOT_CONNECT The attempt to connect to the server failed." Please can you help me pull in the existing Internet Options proxy config? I don't want to define the proxy credentials statically (nor have I tried).

My code:

Function HTTPGet1
Dim o, URL, stat

URL = myURL
On Error Resume Next 
Set o = CreateObject("Microsoft.XMLHTTP")
' If Err.Number <> 0 Then
  'msgbox err.Number & err.Description
   'msgbox "cake" 
   'Exit Function
' End if
o.WinHttpGetIEProxyConfigForCurrentUser
o.open "GET", URL, False
o.send
stat = o.Status 'CInt(o.Status)
if stat = "200" then 
  msgbox "Account created successfully."
elseif stat = "" then
  msgbox "Connection attempt failed due to: " & err.description & "."
  err.clear
else
  msgbox "HTTP error code " & stat & " received."
end if
end function

Thanks for your time!

Upvotes: 1

Views: 1034

Answers (2)

Aravinth Rajan
Aravinth Rajan

Reputation: 113

Use the latest version of ServerXMLHTTP object

Set xHttp= CreateObject("MSXML2.ServerXMLHTTP.6.0")
xHttp.Open "POST", SERVER_URL, data, False
xHttp.setProxy 2, "<Your proxy URL>:<PORT>", ""
xHttp.send 
response = xHttp.responseText

msgbox xHttp.status & "|" & xHttp.statustext
msgbox "Response for get call is :" & response

Upvotes: 1

Peter
Peter

Reputation: 55

A pcap uncovered that the server was responding with a SSL cert error that this API couldn't respond to. I swapped it out for MSXML2.ServerXMLHTTP.6.0 and then was able to handle the host name mismatch.

Function HTTPGet1
Dim o, address, caseNo, URL, stat

URL = myURL
On Error Resume Next 
Set o = CreateObject("MSXML2.ServerXMLHTTP.6.0")
 If Err.Number <> 0 Then
   msgbox err.Number & err.Description
   err.clear
   Exit Function
 End if
o.setOption 2, SXH_SERVER_CERT_IGNORE_ALL_SERVER_ERRORS
o.open "GET", URL, False
o.send
stat = o.Status

The parameter 'SXH_SERVER_CERT_IGNORE_ALL_SERVER_ERRORS' is just one of the options available via the API and this one is not the most secure.

Upvotes: 0

Related Questions