Ben bir boolean veri türü ile basit bir sabun zarf döndüren bir RPC kodlanmış PHP webservice var. Istemci tarafında iz yaparken bu WCF vekil geçmeden önce, sabun zarf bu hakkı gibi görünüyor:
<SOAP-ENV:Envelope SOAP-ENV:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"
xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/"
xmlns:ns1="http://sample.com" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:SOAP-ENC="http://schemas.xmlsoap.org
/soap/encoding/">
<SOAP-ENV:Body>
<ns1:ServiceMessageResponse>
<outgoingVar1>true</outgoingVar1>
</ns1:ServiceMessageResponse>
</SOAP-ENV:Body>
</SOAP-ENV:Envelope>
Döndürülen değer proxy diğer tarafa gelince Ancak, bu false değiştirilmiş. Type = "xsd: boolean" Ben bir xsi ekleyerek denedim outgoingVar1, ama yardımcı olmuyor. Sabun zarf kendisi müşteri bekliyor gerektiğini tam olarak ne olduğunu, ama nedense doğru tüketmek olmaz. Bu PHP web hizmeti kurmak yolu ile ilgisi vardır ya da WCF vekaleten bir şeydir? PHP web hizmeti sadece bu gibi ayarlanır:
ini_set('soap.wsdl_cache_enabled', '0');
ini_set('soap.wsdl_cache_ttl', '0');
$soapServer = new SoapServer('wsdl/sample.wsdl', array('soap_version' => SOAP_1_1));
$soapServer->addFunction('Service');
$soapServer->handle();
ve işlev basit biter 'gerçek getiri;' hattı. Burada hiçbir şey karmaşık. Herhangi bir fikir sorun ne olabilir?
Açıklamalı WSDL (önemsiz ad kaldırıldı ve gerçek olanları modifiye) Bu gibi görünüyor:
<wsdl:definitions name="IJLSoapResponse" targetNamespace="http://casey.com"
tns="http://casey.com" xmlns:samp="http://sample.com" ...>
<wsdl:types>
<xsd:schema targetNamespace="http://casey.com" ...>
<xsd:element name="incomingVar1" type="xsd:string" nillable="true"/>
<xsd:element name="incomingVar2" type="xsd:string" nillable="true"/>
</xsd:schema>
<xsd:schema targetNamespace="http://sample.com" ...>
<xsd:element name="outgoingVar1" type="xsd:boolean" nillable="true"/>
</xsd:schema>
</wsdl:types>
<wsdl:message name="ServiceInput">
<wsdl:part name="incomingVar1" element="tns:incomingVar1"/>
<wsdl:part name="incomingVar2" element="tns:incomingVar2"/>
</wsdl:message>
<wsdl:message name="ServiceOutput">
<wsdl:part name="outgoingVar1" element="samp:outgoingVar1"/>
</wsdl:message>
<wsdl:portType name="ServicePortType">
<wsdl:operation name="ServiceMessage" parameterOrder="incomingVar1 incomingVar2">
<wsdl:input name="ServiceMessageRequest" message="tns:ServiceInput"/>
<wsdl:output name="ServiceMessageResponse" message="tns:ServiceOutput"/>
</wsdl:operation>
</wsdl:portType>
<wsdl:binding name="ServiceBinding" type="tns:ServicePortType">
<soap:binding style="rpc" transport="http://schemas.xmlsoap.org/soap/http"/>
<wsdl:operation name="ServiceMessage">
<soap:operation soapAction="http://casey.com/soap/Service"/>
<wsdl:input name="ServiceMessageRequest">
<soap:body use="encoded" encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" namespace="http://casey.com"/>
</wsdl:input>
<wsdl:output name="ServiceMessageResponse">
<soap:body use="encoded" encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" namespace="http://sample.com"/>
</wsdl:output>
</wsdl:operation>
</wsdl:binding>
<wsdl:service name="ServiceService">
<wsdl:port name="ServicePort" binding="tns:ServiceBinding">
<soap:address location="http://casey.com/soap/Service"/>
</wsdl:port>
</wsdl:service>
</wsdl:definitions>
Bu işler beyan nasıl görmek için yeterli olmalı ... sen açıklık başka bir şeye ihtiyacınız varsa bana bildirin. Yardımlarınız için teşekkürler!