我正在尝试实现在SAP PI系统上运行的Web服务.我看到的WSDL看起来像这样:
<?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>
<?PHP $client = new SoapClient('test.wsdl'); ?>
当我运行我的脚本时,我收到以下错误:
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
我尝试搜索谷歌和StackOverflow上的错误,并检查了PHP.net上的评论,但我似乎无法弄清楚我必须改变什么才能使此服务运行.我也试图打开WSDL扩展名URL,似乎存在.
有人可以在这里扔我骨头吗?我尝试删除扩展程序网址,导致以下错误:
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