davidonpda Posted August 31, 2009 Share Posted August 31, 2009 Okay, I have this SOAP server running in ASP already. We are getting rid of our windows server, so, moving our applications over to PHP. I have three files, clienttest.php, server.php, and the TEST.wsdl. With my files, I can begin a SOAP session from clienttest.php, and I am returned my successful string in the WSDL defined "SendTicketResult" My problem is, is that in the server.php, inside the SendTicket function, I am not getting any data from the client. I have tried our existing program, to send a real ticket to the php server, and I get the success response back perfectly, but I am not getting the ticket data anywhere. Can anyone help me know what I am doing wrong And how to get the ticket from the client. I also have a dataset that our clients use to format the data, I don't think that will help, but if I am wrong, tell me and I will upload that as well. clienttest.php <?php //clienttest.php ini_set("soap.wsdl_cache_enabled", "0"); // disabling WSDL cache //Load the client with wsdl definition. NOTE: Setup the WSDL url $client = new SoapClient("TEST.wsdl"); $data1 = array( 'One_Call_Center' => 'UFPO', 'Ticket_Number' => '03192-000-001', 'Primary_CDC' => array( 'CDC' => 'NIMO / WEST', 'Sequence_Number' => 1, ), /*........ and all complex Type defined on TEST.wsdl and TicketDataSet.xsd*/ ); //Call function SendTicket and pass the params $rsl = $client->SendTicket($data1); //Print the results echo '<pre>'; print_r($rsl); echo '</pre>'; ?> server.php <?php function SendTicket($parameter){ //server.php //This following part is just to see what I am getting sent because I am not getting anything $arrayObj = new ArrayObject(get_defined_vars()); $file1=fopen("test.txt","w"); for($iterator = $arrayObj->getIterator(); $iterator->valid(); $iterator->next()) { fwrite($file1, $iterator->key() . ' => ' . $iterator->current() ); } fclose($file1); //parameters, sendtickets, etc are all empty strings from the client. change top $parameter to anything else, still shows parameter as my only empty variable $result = array( 'SendTicketResult' => 'successful', ); //The results return $result; } ini_set("soap.wsdl_cache_enabled", "0"); // disabling WSDL cache $server = new SoapServer("TEST.wsdl"); //NOTE: on TEST.wsdl configure the server's url. File lines: 65, 69 and 72 $server->addFunction("SendTicket"); $server->handle(); ?> and the TEST.wsdl <?xml version="1.0" encoding="utf-8"?> <definitions xmlns:http="http://schemas.xmlsoap.org/wsdl/http/" xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/" xmlns:s="http://www.w3.org/2001/XMLSchema" xmlns:s0="http://tempuri.org/" xmlns:soapenc="http://schemas.xmlsoap.org/soap/encoding/" xmlns:tm="http://microsoft.com/wsdl/mime/textMatching/" xmlns:mime="http://schemas.xmlsoap.org/wsdl/mime/" targetNamespace="http://tempuri.org/" xmlns="http://schemas.xmlsoap.org/wsdl/"> <types> <s:schema elementFormDefault="qualified" targetNamespace="http://tempuri.org/"> <s:element name="SendTicket"> <s:complexType> <s:sequence> <s:element minOccurs="0" maxOccurs="1" name="xmlTicket"> <s:complexType mixed="true"> <s:sequence> <s:any /> </s:sequence> </s:complexType> </s:element> </s:sequence> </s:complexType> </s:element> <s:element name="SendTicketResponse"> <s:complexType> <s:sequence> <s:element minOccurs="0" maxOccurs="1" name="SendTicketResult" type="s:string" /> </s:sequence> </s:complexType> </s:element> <s:element name="SendAudit"> <s:complexType> <s:sequence> <s:element minOccurs="0" maxOccurs="1" name="xmlAudit"> <s:complexType mixed="true"> <s:sequence> <s:any /> </s:sequence> </s:complexType> </s:element> </s:sequence> </s:complexType> </s:element> <s:element name="SendAuditResponse"> <s:complexType> <s:sequence> <s:element minOccurs="0" maxOccurs="1" name="SendAuditResult" type="s:string" /> </s:sequence> </s:complexType> </s:element> <s:element name="SendMessage"> <s:complexType> <s:sequence> <s:element minOccurs="0" maxOccurs="1" name="xmlMessage"> <s:complexType mixed="true"> <s:sequence> <s:any /> </s:sequence> </s:complexType> </s:element> </s:sequence> </s:complexType> </s:element> <s:element name="SendMessageResponse"> <s:complexType> <s:sequence> <s:element minOccurs="0" maxOccurs="1" name="SendMessageResult" type="s:string" /> </s:sequence> </s:complexType> </s:element> </s:schema> </types> <message name="SendTicketSoapIn"> <part name="parameters" element="s0:SendTicket" /> </message> <message name="SendTicketSoapOut"> <part name="parameters" element="s0:SendTicketResponse" /> </message> <message name="SendAuditSoapIn"> <part name="parameters" element="s0:SendAudit" /> </message> <message name="SendAuditSoapOut"> <part name="parameters" element="s0:SendAuditResponse" /> </message> <message name="SendMessageSoapIn"> <part name="parameters" element="s0:SendMessage" /> </message> <message name="SendMessageSoapOut"> <part name="parameters" element="s0:SendMessageResponse" /> </message> <portType name="TESTWebServiceSoap"> <operation name="SendTicket"> <input message="s0:SendTicketSoapIn" /> <output message="s0:SendTicketSoapOut" /> </operation> <operation name="SendAudit"> <input message="s0:SendAuditSoapIn" /> <output message="s0:SendAuditSoapOut" /> </operation> <operation name="SendMessage"> <input message="s0:SendMessageSoapIn" /> <output message="s0:SendMessageSoapOut" /> </operation> </portType> <portType name="TESTWebServiceHttpGet" /> <portType name="TESTWebServiceHttpPost" /> <binding name="TESTWebServiceSoap" type="s0:TESTWebServiceSoap"> <soap:binding transport="http://schemas.xmlsoap.org/soap/http" style="document" /> <operation name="SendTicket"> <soap:operation soapAction="http://tempuri.org/SendTicket" style="document" /> <input> <soap:body use="literal" /> </input> <output> <soap:body use="literal" /> </output> </operation> <operation name="SendAudit"> <soap:operation soapAction="http://tempuri.org/SendAudit" style="document" /> <input> <soap:body use="literal" /> </input> <output> <soap:body use="literal" /> </output> </operation> <operation name="SendMessage"> <soap:operation soapAction="http://tempuri.org/SendMessage" style="document" /> <input> <soap:body use="literal" /> </input> <output> <soap:body use="literal" /> </output> </operation> </binding> <binding name="TESTWebServiceHttpGet" type="s0:TESTWebServiceHttpGet"> <http:binding verb="GET" /> </binding> <binding name="TESTWebServiceHttpPost" type="s0:TESTWebServiceHttpPost"> <http:binding verb="POST" /> </binding> <service name="TESTWebService"> <port name="TESTWebServiceSoap" binding="s0:TESTWebServiceSoap"> <soap:address location="server.php"/> </port> <port name="TESTWebServiceHttpGet" binding="s0:TESTWebServiceHttpGet"> <http:address location="server.php" /> </port> <port name="TESTWebServiceHttpPost" binding="s0:TESTWebServiceHttpPost"> <http:address location="server.php" /> </port> </service> </definitions> Link to comment https://forums.phpfreaks.com/topic/172615-php-soap-server-problem/ Share on other sites More sharing options...
Recommended Posts
Archived
This topic is now archived and is closed to further replies.