Frage

Ich habe an einem Drehbuch mit PHP4 gearbeitet, die auf NuSOAP beruht. Nun, ich versuche, dies zu PHP5 zu bewegen, und verwenden Sie die buildin Unterstützung für SOAP gibt.

$wsdlPath = "";    // I have obviously set these variables to something meaningful, just hidden for the sake of security
$apiPath = "";
$username = "";
$password = "";

// PHP5 style
$client = new soapclient($wsdlPath, array('login'=>username,                
'password'=> $password,
'soap_version'=> SOAP_1_2,
'location'=> $apiPath,
 'trace'=> 1));

// PHP4/NuSOAP style
$client = new soapclient($wsdlPath, true);  
client->setEndpoint($apiPath);                          
$client->setCredentials($username, $password);
$client ->loadWSD);

Die PHP5-Version wirft die folgende Ausnahme Stacktrace:

EXCEPTION=SoapFault exception: [WSDL] SOAP-ERROR: Parsing WSDL: Couldn't load from 'http://external-nbb.napi.norwegian.no.stage.osl.basefarm.net/api/napi1300?wsdl' in /home/eisebfog/public_html/database/norwegian.php:31
Stack trace:
#0 /home/eisebfog/public_html/database/norwegian.php(31): SoapClient->SoapClient('http://external...', Array)
#1 /home/eisebfog/public_html/database/index.php(53): require_once('/home/eisebfog/...')
#2 {main}

Jetzt, da die NuSOAP Version funktioniert, und das reine PHP5 nicht - es muss keinen Hirnchirurgen, um herauszufinden, ich etwas falsch mache. Ich habe Zugriff auf die .htaccess-Datei und durch phpinfo () Ich habe dafür gesorgt, dass ich richtig NuSOAP bin läuft und läuft PHP5 als ich sollte, und PHP4 / nusoap wenn ich sollte.

Im Grunde bin ich nicht sehr gut mit Web-Services und Seife - aber wenn jemand eine Idee hat, würde ich jede Eingabe schätzen, was ich falsch mache und wie kann ich auf die native Seife in PHP5 bewegen. die angenommener Ressourceneinsparungen in nativer Seife Btw, ist die reson ich diesen Schritt in erster Linie wollen. Ich würde auch keine Links zu Benchmarks zwischen diesen beiden Lösungen zu schätzen wissen.

War es hilfreich?

Lösung

Stellen Sie sicher, nusoap und PHPv5-SOAP auf demselben Server ausgeführt werden. Wenn ich nicht völlig falsch bin, nutzen beide Bibliotheken den gleichen Klasse-Namen. Vielleicht wird es besser funktionieren, wenn Sie sicher, dass keine machen sind NuSopa-Dateien enthalten? Und auch überprüfen, ob die SOAP-Bibliothek geladen werden:

if(!extension_loaded('soap')){
  dl('soap.so'); // Actually a deprecated method. See "notes" at http://no.php.net/dl
}

ich denke, das Version-Feld, das Sie ist definiert als „SOAP 1.1“ beziehen oder ähnlich?

Die besten Wünsche:)

Btw: Was arbeiten Sie? Austausch von Verzögerungen vom Piloten zum Flughafen? Oder vielleicht ein Webservice die die Wartezeit auf Gepäcktransport bei Osl verringern? : P

Andere Tipps

Wir hatten sehr ähnliche Probleme mit PHP5 integrierte in SOAP-Client versucht, einen .NET-basierte Web-Service zu konsumieren. Auch fehlgeschlagen WSDL-Parsing ungültiges Schema berichten. Setzt man die Schema-Definitionen in eine einzige lokale Datei nicht helfen.

Wir gaben den Versuch auf und wechselte zu NuSOAP, die Arbeit getan hat.

Allerdings NuSOAP ist bei weitem nicht perfekt auch. Im Moment Ich steige in Out-of-Speicher Situation bei der Analyse von 1 MB + Antworten. Löschen aller bösen Debug-Code ein wenig geholfen, aber nicht radikal.

So sieht aus wie es zur Zeit in PHP keine 100% kompatibel / Funktions-SOAP-Client-Implementierung ist.

ohne vorher zu testen, ich habe zwei Vorschläge:

Zuerst legen Sie Ihre error_reporting auf den höchstmöglichen (vor der Soapclient erstellen):

error_reporting( E_ALL );

Wenn es etwas falsch mit der Authentifizierung auf der Seite des Servers, wird PHP Warnungen werfen. In den meisten Fällen wird es Ihnen sagen, was schief gegangen ist.

Zweitens: Ich weiß nicht, ob Sie die ‚Lage‘ Option zusammen mit einer URL zu einem Wsdl specifiy können. Theoretisch kann die WSDL-Datei teilt dem Client, wo der Endpunkt der Operationen ist, so müssen Sie nicht stören.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top