ServerXMLHTTP setProxy: Modus 1 wählt eine direkte Verbindung
Verwenden Sie die richtige Proxy-Moduskonstante von ServerXMLHTTP und halten Sie die Bypass-Liste getrennt von alternativen Proxy-Endpunkten.
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.