Ich versuche, einen Web Service auf einem SAP-PI-System zu implementieren. Die WSDL Ich habe sieht wie folgt aus:PHP SoapClient: Unbekannt erforderlich WSDL-Erweiterung
<?xml version="1.0" encoding="UTF-8"?>
<wsdl:definitions name="request_SO" targetNamespace="http://company.ch/orstest/jason_test" xmlns:p1="http://company.ch/orstest/jason_test" xmlns:wsp="http://schemas.xmlsoap.org/ws/2004/09/policy" xmlns:wsu="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-utility-1.0.xsd" xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/">
<wsdl:documentation/>
<wsp:UsingPolicy wsdl:required="true"/>
<wsp:Policy wsu:Id="OP_request_SO"/>
<wsdl:types>
<xsd:schema targetNamespace="http://company.ch/orstest/jason_test" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns="http://company.ch/orstest/jason_test">
<xsd:element name="request" type="request"/>
<xsd:element name="response" type="response"/>
<xsd:complexType name="request">
<xsd:annotation>
<xsd:appinfo source="http://sap.com/xi/VersionID">a8b7948ac2e211e2b2380000001f0d6a</xsd:appinfo>
</xsd:annotation>
<xsd:sequence>
<xsd:element name="body" type="xsd:string"/>
</xsd:sequence>
</xsd:complexType>
<xsd:complexType name="response">
<xsd:annotation>
<xsd:appinfo source="http://sap.com/xi/VersionID">bf49af09c36c11e299790000001f0d6a</xsd:appinfo>
</xsd:annotation>
<xsd:sequence>
<xsd:element name="body" type="xsd:string"/>
</xsd:sequence>
</xsd:complexType>
</xsd:schema>
</wsdl:types>
<wsdl:message name="request">
<wsdl:documentation/>
<wsdl:part name="request" element="p1:request"/>
</wsdl:message>
<wsdl:message name="response">
<wsdl:documentation/>
<wsdl:part name="response" element="p1:response"/>
</wsdl:message>
<wsdl:portType name="request_SO">
<wsdl:documentation/>
<wsdl:operation name="request_SO">
<wsdl:documentation/>
<wsp:Policy>
<wsp:PolicyReference URI="#OP_request_SO"/>
</wsp:Policy>
<wsdl:input message="p1:request"/>
<wsdl:output message="p1:response"/>
</wsdl:operation>
</wsdl:portType>
<wsdl:binding name="request_SOBinding" type="p1:request_SO">
<soap:binding style="document" transport="http://schemas.xmlsoap.org/soap/http" xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/"/>
<wsdl:operation name="request_SO">
<soap:operation soapAction="http://sap.com/xi/WebService/soap1.1" xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/"/>
<wsdl:input>
<soap:body use="literal" xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/"/>
</wsdl:input>
<wsdl:output>
<soap:body use="literal" xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/"/>
</wsdl:output>
</wsdl:operation>
</wsdl:binding>
<wsdl:service name="request_SOService">
<wsdl:port name="HTTP_Port" binding="p1:request_SOBinding">
<soap:address location="http://qa1100ap601.company.car.web:50000/XISOAPAdapter/MessageServlet?senderParty=&senderService=BS_ORS&receiverParty=&receiverService=&interface=request_SO&interfaceNamespace=http://company.ch/orstest/jason_test" xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/"/>
</wsdl:port>
<wsdl:port name="HTTPS_Port" binding="p1:request_SOBinding">
<soap:address location="https://qas.soa.subcompany.company.ch/XISOAPAdapter/MessageServlet?senderParty=&senderService=BS_ORS&receiverParty=&receiverService=&interface=request_SO&interfaceNamespace=http://company.ch/orstest/jason_test" xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/"/>
</wsdl:port>
</wsdl:service>
</wsdl:definitions>
Meine PHP-Datei wie diese (nichts mehr drin derzeit) aussieht:
<?php
$client = new SoapClient('test.wsdl');
?>
Wenn ich mein Skript renne, ich die folgende Fehlermeldung erhalten geworfen :
Fatal error: Uncaught SoapFault exception: [WSDL] SOAP-ERROR: Parsing WSDL: Unknown required WSDL extension 'http://schemas.xmlsoap.org/ws/2004/09/policy' in /srv/www/htdocs/wsdl.php:2 Stack trace: #0 /srv/www/htdocs/wsdl.php(2): SoapClient->SoapClient('test.wsdl') #1 {main} thrown in /srv/www/htdocs/wsdl.php on line 2
ich habe versucht, die Suche nach dem Fehler auf google und Stackoverflow, und überprüft auch die Kommentare auf php.net, aber ich kann nicht scheinen, um herauszufinden, was ich ändern, um müssten diese zu erhalten Dienst läuft. Ich habe auch versucht, die WSDL-Erweiterung URL zu öffnen, scheint es zu existieren.
Kann mir jemand einen Knochen hier werfen? Ich habe versucht, die Erweiterung URL zu entfernen, dass die Ergebnisse in der folgenden Fehler:
Fatal error: Uncaught SoapFault exception: [WSDL] SOAP-ERROR: Parsing WSDL: Unexpected WSDL element <UsingPolicy> in /srv/www/htdocs/wsdl.php:2 Stack trace: #0 /srv/www/htdocs/wsdl.php(2): SoapClient->SoapClient('test.wsdl') #1 {main} thrown in /srv/www/htdocs/wsdl.php on line 2
Hey toll, der Fehler ist jetzt weg :) Jetzt kann ich den Service ausprobieren :) – Ahatius
Awesome! Froh zu helfen. –