Warum funktioniert mein SOAP-Client unter WAMP, schlägt aber unter Linux mit „SOAP-ERROR: Parsing WSDL: Loading from' fehl?

Susan Sarandon
Freigeben: 2024-11-08 18:45:02
Original
684 Leute haben es durchsucht

Why Does My SOAP Client Work on WAMP But Fail With

WSDL kann nicht analysiert werden: „SOAP-FEHLER: WSDL wird nicht analysiert: Konnte nicht geladen werden, funktioniert aber auf WAMP“

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.

Ursache

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.

Lösung

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);
Nach dem Login kopieren

Zusätzliche Erkenntnisse

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
Nach dem Login kopieren

( schlägt fehl)

curl  -A 'cURL User Agent'  -6 http://ec.europa.eu/taxation_customs/vies/checkVatService.wsdl
Nach dem Login kopieren

(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!

Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Neueste Artikel des Autors
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage