сторонние решения для взаимодействия между php и WCF WebServices - PullRequest
0 голосов
/ 12 марта 2012

Мне нужно использовать веб-сервис WCF (1.2) с клиентом php и AKAIK, php не совместим с методом wsHttpBinding (верно?).Я попытался, и я получил ошибки, используя файл WSDL:

"Fatal error: Uncaught SoapFault exception: [WSDL] SOAP-ERROR: Parsing Schema: can't import schema from 'https://vk3fend/..."

и без него:

"Fatal error: Uncaught SoapFault exception: [s:Sender] The SOAP action specified on the message, '', does not match the HTTP SOAP Action, 'http://tempuri.org/...."

Nusoap не может помочь мне, поскольку он не поддерживает SOAP 1.2, есть лиРешение, которое я могу использовать, кроме WSO2 (слишком сложное для интеграции)?

спасибо за любой совет

РЕДАКТИРОВАТЬ вот файл WSDL:

<?xml version="1.0" encoding="utf-8" ?> 
<wsdl:definitions name="myServerWs" targetNamespace="http://tempuri.org/" xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/" xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/" xmlns:wsu="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-utility-1.0.xsd" xmlns:soapenc="http://schemas.xmlsoap.org/soap/encoding/" xmlns:wsam="http://www.w3.org/2007/05/addressing/metadata" xmlns:tns="http://tempuri.org/" xmlns:wsa="http://schemas.xmlsoap.org/ws/2004/08/addressing" xmlns:wsp="http://schemas.xmlsoap.org/ws/2004/09/policy" xmlns:wsap="http://schemas.xmlsoap.org/ws/2004/08/addressing/policy" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msc="http://schemas.microsoft.com/ws/2005/12/wsdl/contract" xmlns:wsaw="http://www.w3.org/2006/05/addressing/wsdl" xmlns:soap12="http://schemas.xmlsoap.org/wsdl/soap12/" xmlns:wsa10="http://www.w3.org/2005/08/addressing" xmlns:wsx="http://schemas.xmlsoap.org/ws/2004/09/mex">
<wsp:Policy wsu:Id="WSHttpBinding_ImyServerWs_policy">
<wsp:ExactlyOne>
<wsp:All>
<sp:TransportBinding xmlns:sp="http://schemas.xmlsoap.org/ws/2005/07/securitypolicy">
<wsp:Policy>
<sp:TransportToken>
<wsp:Policy>
  <sp:HttpsToken RequireClientCertificate="false" /> 
  </wsp:Policy>
  </sp:TransportToken>
<sp:AlgorithmSuite>
<wsp:Policy>
  <sp:Basic256 /> 
  </wsp:Policy>
  </sp:AlgorithmSuite>
<sp:Layout>
<wsp:Policy>
  <sp:Strict /> 
  </wsp:Policy>
  </sp:Layout>
  </wsp:Policy>
  </sp:TransportBinding>
  <wsaw:UsingAddressing /> 
  </wsp:All>
  </wsp:ExactlyOne>
  </wsp:Policy>
<wsdl:types>
<xsd:schema targetNamespace="http://tempuri.org/Imports">
  <xsd:import schemaLocation="https://host/myServerWs/myServerWs.svc?xsd=xsd0" namespace="http://tempuri.org/" /> 
  <xsd:import schemaLocation="https://host/myServerWs/myServerWs.svc?xsd=xsd1" namespace="http://schemas.microsoft.com/2003/10/Serialization/" /> 
  <xsd:import schemaLocation="https://host/myServerWs/myServerWs.svc?xsd=xsd2" namespace="http://schemas.datacontract.org/2004/07/myServer_WS" /> 
  <xsd:import schemaLocation="https://host/myServerWs/myServerWs.svc?xsd=xsd3" /> 
  </xsd:schema>
  </wsdl:types>
<wsdl:message name="ImyServerWs_ign_myFunction_InputMessage">
  <wsdl:part name="parameters" element="tns:ign_myFunction" /> 
  </wsdl:message>
<wsdl:message name="ImyServerWs_ign_myFunction_OutputMessage">
  <wsdl:part name="parameters" element="tns:ign_myFunctionResponse" /> 
  </wsdl:message>
<wsdl:portType name="ImyServerWs">
<wsdl:operation name="ign_myFunction">
  <wsdl:input wsaw:Action="http://tempuri.org/ImyServerWs/ign_myFunction" message="tns:ImyServerWs_ign_myFunction_InputMessage" /> 
  <wsdl:output wsaw:Action="http://tempuri.org/ImyServerWs/ign_myFunctionResponse" message="tns:ImyServerWs_ign_myFunction_OutputMessage" /> 
  </wsdl:operation>
  </wsdl:portType>
<wsdl:binding name="WSHttpBinding_ImyServerWs" type="tns:ImyServerWs">
  <wsp:PolicyReference URI="#WSHttpBinding_ImyServerWs_policy" /> 
  <soap12:binding transport="http://schemas.xmlsoap.org/soap/http" /> 
<wsdl:operation name="ign_myFunction">
  <soap12:operation soapAction="http://tempuri.org/ImyServerWs/ign_myFunction" style="document" /> 
<wsdl:input>
  <soap12:body use="literal" /> 
  </wsdl:input>
<wsdl:output>
  <soap12:body use="literal" /> 
  </wsdl:output>
</wsdl:operation>
  </wsdl:binding>
<wsdl:service name="myServerWs">
<wsdl:port name="WSHttpBinding_ImyServerWs" binding="tns:WSHttpBinding_ImyServerWs">
  <soap12:address location="https://host/myServerWs/myServerWs.svc" /> 
<wsa10:EndpointReference>
  <wsa10:Address>https://host/myServerWs/myServerWs.svc</wsa10:Address> 
<Identity xmlns="http://schemas.xmlsoap.org/ws/2006/02/addressingidentity">
  <Dns>localhost</Dns> 
  </Identity>
  </wsa10:EndpointReference>
  </wsdl:port>
  </wsdl:service>
  </wsdl:definitions>

1 Ответ

0 голосов
/ 12 марта 2012

PHP имеет встроенный класс мыла, который работает как с 1.1, так и с 1.2.http://php.net/manual/en/class.soapclient.php

Это не кажется таким всеобъемлющим, как WSO или Nusoap, но оно может выполнить работу.

...