In diesem Szenario stößt eine Person auf eine Problem bei der Verwendung eines SOAP-Clients auf einem Linux-Server. Während der Code auf einem WAMP-Server einwandfrei funktioniert, schlägt er mit der Fehlermeldung „SOAP-FEHLER: Parsing WSDL: Konnte nicht geladen von“ fehl.
Das zugrunde liegende Problem, as Ein von einem sachkundigen Befragten festgestellter Fehler liegt darin, dass der SoapClient in bestimmten PHP-Versionen keine HTTP-Benutzeragenteninformationen übermittelt. Dies führt dazu, dass der Remote-Webdienst die Anfrage ablehnt.
Um die Situation zu beheben, empfiehlt der Befragte, den Benutzeragenten explizit im Code festzulegen, indem er einen Kontextstrom verwendet:
$opts = array( 'http' => array( 'user_agent' => 'PHPSoapClient' ) ); $context = stream_context_create($opts); $wsdlUrl = 'http://ec.europa.eu/taxation_customs/vies/checkVatService.wsdl'; $soapClientOptions = array( 'stream_context' => $context, 'cache_wsdl' => WSDL_CACHE_NONE ); $client = new SoapClient($wsdlUrl, $soapClientOptions);
Der Befragte stellt weiterhin fest, dass der betroffene Webdienst ein eigenartiges Verhalten zeigt. Über IPv6 ohne User-Agent-String gestellte Anfragen schlagen fehl, während Anfragen mit IPv4 oder einem User-Agent-String erfolgreich sind. Dies deutet auf ein potenzielles Problem mit der Konfiguration des Webdienstes hin.
Um dies zu überprüfen, demonstriert der Befragte den Unterschied im Verhalten bei HTTP-Anfragen mit und ohne Benutzeragentenzeichenfolge:
curl -A '' -6 http://ec.europa.eu/taxation_customs/vies/checkVatService.wsdl
( schlägt fehl)
curl -A 'cURL User Agent' -6 http://ec.europa.eu/taxation_customs/vies/checkVatService.wsdl
(erfolgreich)
Letztendlich ergibt sich das Problem aus der Kombination von IPv6-HTTP-Anfragen, unzureichende Benutzeragenteninformationen im SoapClient und potenzielle Fehler im Webdienst selbst.
Das obige ist der detaillierte Inhalt vonWarum funktioniert mein SOAP-Client unter WAMP, schlägt aber unter Linux mit „SOAP-ERROR: Parsing WSDL: Loading from' fehl?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!