Dieser VBA-Aufruf sieht so aus, als würde er den in proxyServer gespeicherten Proxy auswählen:

http.setProxy 1, proxyServer, bypassList

Bei MSXML ServerXMLHTTP wählt das erste Argument den Proxy-Modus. Die dokumentierten Werte sind 0 für die Standardkonfiguration, 1 für eine direkte Verbindung und 2 für einen ausdrücklich angegebenen Proxy. Eine Adresse nach 1 zu übergeben macht aus dem direkten Modus keinen manuellen Proxy-Modus.

Ein minimales Beispiel für einen manuellen Proxy ist:

Dim http As Object
Set http = CreateObject("MSXML2.ServerXMLHTTP.6.0")
http.setProxy 2, "proxy.example:8080", "<local>"
http.Open "GET", "https://example.com/", False
http.send

Der Endpunkt im Beispiel ist ein Platzhalter. Für eine Prüfung mit öffentlichen Proxys ersetzen Sie ihn durch eine HTTP-Adresse aus der HTTP-Proxy-Liste. Das dritte Argument ist eine Bypass-Liste; hier nutzt <local> die dokumentierte Ausnahme für lokale Namen. Es ist kein zweiter Proxy, der bei einem Fehlschlag des ersten versucht wird. Eine IP und einen Port eines anderen Proxys dort einzutragen drückt daher die falsche Art von Einstellung aus.

Verwenden Sie benannte Konstanten, wo Ihre VBA-Referenzen sie bereitstellen, oder definieren Sie die betreffende Konstante lokal, wenn Sie spätes Binden nutzen, damit der Modus bei der Durchsicht sichtbar bleibt.

Behalten Sie auch den Objekttyp im Blick. ServerXMLHTTP, das browserorientierte XMLHTTP und WinHttpRequest sind unterschiedliche COM-Schnittstellen. Ein funktionierendes Beispiel für die eine belegt nicht die Konfigurationsquelle der anderen. Sobald das richtige Objekt den manuellen Proxy-Modus wählt, untersuchen Sie jeden verbleibenden Verbindungs-, Authentifizierungs- oder TLS-Fehler auf diesem Weg.

Ähnliche Artikel