Bei einem Savon-Client, der HTTPI verwendet, gehört der Proxy zu den Optionen des Clients. Er greift beim Abruf einer entfernten WSDL und beim Senden der SOAP-Anfrage.

client = Savon.client(
  wsdl: 'https://service.example/soap?wsdl',
  proxy: ENV.fetch('SOAP_PROXY_URL'),
  open_timeout: 5,
  read_timeout: 15
)

Das Beispiel setzt den HTTPI-Transport voraus. Stellen Sie eine freigegebene Proxy-URL über die Umgebung bereit. Für einen öffentlichen SOAP-Test, der einen nicht authentifizierten HTTP-Vermittler zulässt, kann ein Kandidat aus der HTTP-Proxy-Liste diese URL liefern; halten Sie die Entscheidungen zur Dienst- und Proxy-Authentifizierung getrennt. Nutzt die unterstützte Authentifizierungsmethode URL-Zugangsdaten, kodieren Sie reservierte Zeichen in diesen Zugangsdaten und halten Sie die entstehende URL aus Protokollen heraus.

Savon nennt sie „globale Optionen“, sie gelten aber nur für eine Client-Instanz. Ein anderswo erzeugter Client erbt den Proxy nicht automatisch.

Prüfen Sie den installierten Transport, bevor Sie das Snippet wiederverwenden. Die aktuelle Savon-Dokumentation ordnet diese Optionen HTTPI zu; der Faraday-Transport hat über client.faraday seine eigene Einrichtungsschnittstelle und lehnt diese HTTPI-spezifischen Optionen ab. Konfigurieren Sie den gewählten Transport, statt beide Schnittstellen zu mischen.

Halten Sie das Proxy-Konto getrennt von den Zugangsdaten des SOAP-Dienstes und den WS-Security-Werten. Die 407 des Proxys, die HTTP-Anmeldeaufforderung des Dienstes und ein SOAP-Fehler kennzeichnen unterschiedliche Austausche. Der WSDL-Abruf kann fehlschlagen, bevor der Client überhaupt eine Anwendungsoperation ausgeführt hat.

Ähnliche Artikel