php SoapClient schlägt fehl, wenn übergeben ein wsdl mit relativen Pfad-schemas
Ich habe Folgendes Problem:
Die Instanziierung von meinem SoapClient-Objekt schlägt fehl, wenn ich übergeben Sie es einer wsdl-Datei, importiert ein schema, relative Pfade zu verwenden. (Ich glaube, dies ist der Fall sowieso, basierend auf meiner Forschung)
Mein code ist wie folgt:
$wsdl = 'http://myproxy/webservice?wsdl';
$options = array( /* options */ );
$client = new SoapClient($wsdl, $options);
Den schema-import-Teil der wsdl:
<schema xmlns="http://www.w3.org/2001/XMLSchema">
<import namespace="http://myprovider/namespace1/namespace1" schemaLocation="schema1.xsd"/>
<import namespace="http://myprovider/namespace1/namespace2" schemaLocation="schema2.xsd"/>
<import namespace="http://myprovider/namespace1/namespace3" schemaLocation="schema3.xsd"/>
</schema>
Den Fehler, dass ich bekommen:
SOAP-ERROR: Parsing WSDL: Couldn't load from 'http://myproxy/webservice?wsdl' : Extra content at the end of the document
Forschung führte mich zu Artikeln wie diesem:
https://issues.apache.org/jira/browse/AXIS2-484
Was ich sagen kann, es scheint, habe ich zwei Möglichkeiten:
- Bekommen mein provider zum ändern der schema-Wege zur absoluten
- Bekommen mein provider mir eine Kopie des Schemas, so kann ich host auf meinem server, wo die
SoapClient
genannt wird, von
InformationsquelleAutor denormalizer | 2011-05-26
Du musst angemeldet sein, um einen Kommentar abzugeben.
Wie ich es vermutet hatte.
Den relativen Pfad zum schema bedeutet, dass der SoapClient beim Parsen der wsdl, wird versuchen, auf die schema-Dateien über den proxy als Referenz, etwa so:
Da ich nicht über die xsd-Dateien, dadurch wird der SoapClient zu werfen ist ein Fehler.
Die Lösung für dieses problem ist die Beseitigung des proxy, so dass die relativen Pfade zu externen Ressourcen sind nicht betroffen. Die Lösung eignet sich auch können hier gefunden werden:
Die Erweiterung php SoapClient für die siteminder-Authentifizierung
InformationsquelleAutor denormalizer