SOAP und Tempuri

bauchinj

Erfahrenes Mitglied
Hallo!

Hab ein XML bekommen, dass ich in der Form an ein Webservice senden soll, bekomm jetzt aber den Fehler

Code:
SOAP-ERROR: Parsing WSDL: Couldn't load from 'http://50.115.72.149/xyz/test.asmx?wdsl' : Premature end of data in tag html line 3

Aber mal von vorne...
Hab mir ein Array zusammengebaut, dass dem XML so entsprechen soll:
$data['xyz'] = 'value';...

Hier meine Übertragungsfunktion:
Code:
$client = new SoapClient($url, array('trace' => 1));
$response = $client->__soapCall($method,$data);

Hab ursprünglich damit gearbeitet:
Code:
$client = new SoapClient($url, array('trace' => 1));
$response = $client->$method($data);

Im Array selbst ist kein Fehler - auch die Formatierung der Werte muss so passen. Jetzt hab ich von der Gegenstelle ein Beispiel XML erhalten und da steht folgende erste Zeile:

Code:
<soap:Envelope xmlns:soap="http://www.w3.org/2003/05/soap-envelope" xmlns:tem="http://tempuri.org/">

was mir jetzt ein wenig kopfzerbrechen bereitet ist "xmlns:tem="http://tempuri.org/"". Ich weiß leider nicht was dies macht und welchen Unterschied es für die Übertragung darstellt, aber könnte dies den Fehler verursachen, dass ich dies nicht so übertrage?


Danke für eure Hilfe!
 
Ich glaube, das dein error_reporting plus display_errors auf 1 das Problem verursacht. Setze die display_errors mal mit ini_set temporär auch 0 und logge statt dessen alle Fehler ins error.log des Apache:

PHP:
error_reporting(E_ALL|E_STRICT);
ini_set('display_errors', 0);
ini_set('log_errors', 1);
 
leider nein, hab deinen Code eingefügt, verursacht aber keine Veränderung im Ergebnis. Ich muss an dieser Stelle vielleicht noch dazu sagen, dass ich keinen Zugriff auf die error.log habe, also kann ich auch nicht sagen, was in die Datei eingetragen wird.

Hm... Kann man vielleicht irgendwie den genauen String ausgeben, der VERsendet wurde?
 
Zuletzt bearbeitet:
Hab da jetzt noch mal in Ruhe drüber nachgedacht. Warum kommt eine Fehlermeldung beim Abholen des WSDL? Der Server, den du da im URI hast, reagiert jedenfalls nicht auf einen http-Request. Ist die IP korrekt? Das WSDL wird für den Soap-Client benötigt, damit er den Endpunkt zum Server weiß. Wenn das WSDL nicht verfügbar ist, funktioniert der Webservice in der Regel nicht.

Kannst du versichern, das die Informationen korrekt sind?
 
Naja... Wir arbeiten jetzt schon seit über einem Jahr an dem Problem, aber ich bin mir noch immer nicht sicher, ob ich die richtigen Infos habe, denn je versuch, den ich absetzt bekomme ich ein anderes XML-Format von den Programmierern des SOAP-Servers zurück...

Also es sieht schon eher danach aus, dass irgendwas beim Server nicht passt, oder? Ich werde nur von mal zu mal verunsicherter, obs nicht doch am versenden liegt, wobei da ja kaum was falsch gemacht werden kann....
 
Also zu mindest das WSDL sollte mal ankommen. Ich denke ich mal, das wenn der Server nicht antwortet, bekommst du eine ERR404-Seite, was auch erklärt, warum da HTML-Code drin ist (steht in deinem ersten Post). WSDL sollte in XML kommen. Ok, HTML ist streng genommen eine Untermenge von XML, aber dennoch darf <html> eigentlich da nicht drin vorkommen.

Wie gesagt, beschreibt das WSDL den Endpunkt am Server, sprich, welche Funktionen bietet der WS an und welche Signatur haben die.

IMHO ist die IP falsch oder die verwenden eine Firewall für ihren Server und es muss dein Test-System erstmal da freigeschaltet werden. Testest du auf deinem lokalen Rechner oder auf dem Ziel-Host, also da, wo der Client mal laufen soll?
 
Ich teste auf dem Ziel-Host!

Woran erkennst du, dass HTML-Code zurück kommt?


ah.... wie leicht man über seine eigene Fehlermeldung drüberstolpert....
 
Zuletzt bearbeitet:
An dem hier:

Code:
SOAP-ERROR: Parsing WSDL: Couldn't load from 'http://50.115.72.149/xyz/test.asmx?wdsl' : Premature end of data in tag html line 3

Premature end of data in tag html line 3

EDIT: Wenn du Anwort auf dem Ziel-System von deren Server bekommst, kannst du ja das WSDL mal mit file_get_contents() abholen und lokal zwischen speichern. Dann siehst du, was da drinnen steht.

- Sie verwenden also offensichtlich doch eine Firewall oder dergleichen.
 
Zuletzt bearbeitet:
Zurück