Ich habe ein Problem, wo ich versuche, den Standard PHP SoapClient zu verwenden, um auf eine Methode auf einem SoapServer zuzugreifen. Das Problem besteht darin, dass die Methode auf dem SoapServer zweimal mit demselben Namen aufgeführt wird, die Aktion jedoch anders ist.PHP SoapClient Remap SoapAction im WSDL-Modus?
Zum Beispiel: SOAP UI zeigt GetStockQuote und GetStockQuote zweimal aufgeführt, aber das zweite GetStockQuote wird tatsächlich GetStockQuoteV2 aufrufen.
Aber meine PHP SoapClient, wenn ich $ client-> GetStockQuote aufrufen, wird es automatisch die erste aufrufen. Aus meiner Forschung muss ich stattdessen so etwas machen.
$client->__soapCall('GetStockQuote', array($request), array('soapaction'=>'GetStockQuoteV2'));
Aber wenn ich in wsdl-Modus bin, ruft sie noch GetStockQuote statt GetStockQuoteV2.
Meine Schlussfolgerung war, dass ich im Nicht-WSDL-Modus laufen und mit den Ärgernissen davon umgehen muss. Im Nicht-WSDL-Modus scheint der obige __soapCall die richtige Methode aufzurufen, aber da ich im Nicht-WSDL-Modus bin, glaube ich, dass es ein Problem beim Erstellen des entsprechenden AuthHeaders gibt, den der Server benötigt.
Meine Frage ist, kann ich die Soap-Aktion in PHP SoapClient wsdl-Modus neu zuordnen?
immer Soap-Client mit Cache deaktiviert beim Entwickeln von App ausführen. $ client = new SoapClient ('http://somewhere.com/?wsdl', Array ('cache_wsdl' => WSDL_CACHE_NONE)); und vielleicht teilen Sie Ihre WSDL-Datei. Wenn Sie mit SOAP mit deaktivierter WS-I-Kompatibilität arbeiten und den WS-I-Kompatibilitätsmodus aktiviert haben, unterscheiden sich beide WSDL-Dateien. –