In this Post, we shall create a Web Service in PHP, and call it through a PHP Client.
The following steps are required before we begin :-
1) Download the file php_soap.dll and copy it into the PHP directory.
Next , make the following entry in the PHP.ini file
In this Web Service we shall create a single function called sayHello
Here is the code for this function :-
function sayHello($name)
{
return "Hello $name";
}
Next create a WSDL file for this function:-
The following steps are required before we begin :-
1) Download the file php_soap.dll and copy it into the PHP directory.
Next , make the following entry in the PHP.ini file
In this Web Service we shall create a single function called sayHello
Here is the code for this function :-
function sayHello($name)
{
return "Hello $name";
}
Next create a WSDL file for this function:-
sayhello.wsdl
<?xml version="1.0" ?>
<definitions name="welcome"
targetNamespace="http://localhost:777/HypatiaWebServices/sayHello"
xmlns:tns="http://localhost:777/HypatiaWebServices/sayHello"
xmlns:xsd="http://www.w3.org/2001/XMLSchema"
xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/"
xmlns="http://schemas.xmlsoap.org/wsdl/">
<message name="sayHelloRequest">
<part name="name" type="xsd:string" />
</message>
<message name="sayHelloResponse">
<part name="return" type="xsd:string" />
</message>
<portType name="QuotePortType">
<operation name="sayHello">
<input message="tns:sayHelloRequest" />
<output message="tns:sayHelloResponse" />
</operation>
</portType>
<binding name="QuoteBinding" type="tns:QuotePortType">
<soap:binding
style="rpc" transport="http://schemas.xmlsoap.org/soap/http" />
<operation name="sayHello">
<soap:operation soapAction="" />
<input>
<soap:body use="encoded"
encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" />
</input>
<output>
<soap:body use="encoded"
encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" />
</output>
</operation>
</binding>
<service name="welcome">
<documentation>Says Hello to you</documentation>
<port name="QuotePort" binding="tns:QuoteBinding">
<soap:address
location="http://localhost:777/HypatiaWebServices/HypatiaWebServiceServer.php" />
</port>
</service>
</definitions>
<definitions name="welcome"
targetNamespace="http://localhost:777/HypatiaWebServices/sayHello"
xmlns:tns="http://localhost:777/HypatiaWebServices/sayHello"
xmlns:xsd="http://www.w3.org/2001/XMLSchema"
xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/"
xmlns="http://schemas.xmlsoap.org/wsdl/">
<message name="sayHelloRequest">
<part name="name" type="xsd:string" />
</message>
<message name="sayHelloResponse">
<part name="return" type="xsd:string" />
</message>
<portType name="QuotePortType">
<operation name="sayHello">
<input message="tns:sayHelloRequest" />
<output message="tns:sayHelloResponse" />
</operation>
</portType>
<binding name="QuoteBinding" type="tns:QuotePortType">
<soap:binding
style="rpc" transport="http://schemas.xmlsoap.org/soap/http" />
<operation name="sayHello">
<soap:operation soapAction="" />
<input>
<soap:body use="encoded"
encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" />
</input>
<output>
<soap:body use="encoded"
encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" />
</output>
</operation>
</binding>
<service name="welcome">
<documentation>Says Hello to you</documentation>
<port name="QuotePort" binding="tns:QuoteBinding">
<soap:address
location="http://localhost:777/HypatiaWebServices/HypatiaWebServiceServer.php" />
</port>
</service>
</definitions>
Next create the Web Service Server
Here is the code for the server:-
HypatiaWebServiceServer.php
<?php
function sayHello($name)
{
return "Hello $name";
}
$server=new SoapServer("sayhello.wsdl");
$server->addFunction("sayHello");
$server->handle();
?>
function sayHello($name)
{
return "Hello $name";
}
$server=new SoapServer("sayhello.wsdl");
$server->addFunction("sayHello");
$server->handle();
?>
Here is the WSDL file as viewed in a Browser:-
Next create a PHP Client. Here we provide the URL to the WSDL.Then simply call the function.The parameters are passed in an array. Here is the complete code:-
HypatiaWebServiceClient.php
<?php
$client=new SoapClient("http://localhost:777/HypatiaWebServices/HypatiaWebServiceServer.php?wsdl");
print $client->__call("sayHello",(array("Champak")));
?>
$client=new SoapClient("http://localhost:777/HypatiaWebServices/HypatiaWebServiceServer.php?wsdl");
print $client->__call("sayHello",(array("Champak")));
?>
Here is the output in firefox:-