2017-05-31 4 views
0

Ich brauche eine Verbindung zu einem Webserver mit VBScript. Mit Powershell funktioniert das einwandfreie:http-basic-auth gegen Webserver mit Vbs

$url = "https://someserver:9200/?q=name:Hans" 

$headers = @{ Authorization = "Basic c29tZXVzZXI6c29tZXBhc3M=" } 

$result = Invoke-WebRequest -Uri $url -Method Post -Body $body -ContentType application/x-www-form-urlencoded -Headers $headers 

Jetzt muss ich mit vbscript das gleiche tun:

url = "https://someserver:9200/?q=name:Hans" 

Set xmlHttp = CreateObject("WinHTTP.WinHTTPRequest.5.1") 
xmlHttp.Open "POST", url, false 
xmlHttp.SetRequestHeader "Authorization", "Basic c29tZXVzZXI6c29tZXBhc3M=" 
xmlHttp.SetRequestHeader "Content-Type", "application/x-www-form-urlencoded" 
xmlHttp.send 

Leider dies mir ein Fehler gibt:

A certificate is required to complete client authentication 

Was mache ich falsch?

BeMod

Antwort

0

Es funktioniert in Powershell, weil die [WebRequest] Objekt eine Reihe von Standard-Parameter setzt und es sieht aus wie WinHttpRequest COM (https://msdn.microsoft.com/en-us/library/windows/desktop/aa383998(v=vs.85).aspx) Objekt nicht. Um diese Eigenschaften manuell festzulegen, müssen Sie die .Option-Eigenschaft für das WinHTTPRequest-Objekt verwenden, um Indizes mit Werten festzulegen, die der erforderlichen WinHTTPRequest-Enumeration entsprechen: (https://msdn.microsoft.com/en-us/library/windows/desktop/aa384108(v=vs.85).aspx). Zum Beispiel:

xmlHttp.Option(0) = "http_requester/0.1" 
xmlHttp.Option(4) = 13056 
xmlHttp.Option(6) = "True" 
xmlhttp.Option(12) = "True"