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>