Eurojackpot Haarlemmermeer loterij

  1. Hoe Werkt Bingokaart: Op de reels ziet u vruchten zoals watermeloenen, druiven, pruimen sinaasappels, citroenen, kersen, maar ook andere klassieke symbolen zoals bellen, sterren en rode 7s..
  2. Baccarat Casino - Spelers die denken aan het plaatsen van weddenschappen zonder te leren wat elke inzet betekent, zullen al hun geld verliezen.
  3. Welke Casinos Zijn Er In Nederland: Spelers die graag gebruik maken van eWallets zoals Neteller en Skrill, moet weten dat deze betaling types zijn vaak uitgesloten van casino bonussen.

Sport wedden Amsterdam

Gratis Spins Online Casino Zonder Storting
Vandaag de dag worden Online pokies gemonitord en gereguleerd om eerlijke gameplay te garanderen.
Tgcasino Casino Be 2025 Review
Hier bent u in staat om 2500 in contanten plus 100 Gratis Spins op speelautomaten 10 van die worden ontvangen direct na registratie zonder enige fondsen zetten.
Scatter wint worden betaald in elke positie op de rollen.

Sport goksites Flevoland

Hellraiser Gokkast Online Gratis
Neem dat 95 procent nummer dat ik al heb genoemd.
Nolimitbet Casino Be 2025 Review
De spanning zal dan ook al snel hoog oplopen..
Winkans Blackjack

Sjoerd Maessen blog

PHP and webdevelopment

Introduction into SOAP, setting up a simple webservice with PHP SOAP

with 17 comments

I was asked to create a simple webservice that would allow us to transfer a intranet post to an external CMS. In this post I will explain the steps you must take to set-up a simple webservice with the PHP SOAP extension.

The first step, create a simple class that we will use to request data from
We will create a class with one method that returns a string with the parameter we called it. The method will accept one parameter and will check if the value is correct.


Nothing special here, notice that we don’t throw a normal exception but return the SoapFault instead so we can handle the error clientside.

The second step, create a WSDL document

The WSDL document is a simple XML document that describes:
– the service itself
– the operations of the service
– the data types used in the service

The WSDL will describe our method getItem from our Blog service class so we can call it later on.

So how does this WSDL thing look like?

<?xml version="1.0" encoding="UTF-8" ?>
<definitions name="Entities"
            targetNamespace="urn:blog"
            xmlns:typens="urn:blog"
            xmlns:xsd="http://www.w3.org/2001/XMLSchema"
            xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/"
            xmlns:soapenc="http://schemas.xmlsoap.org/soap/encoding/"
            xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/"
            xmlns="http://schemas.xmlsoap.org/wsdl/">
    <types>
        <xsd:schema xmlns="http://www.w3.org/2001/XMLSchema" targetNamespace="urn:blog">
        </xsd:schema>
    </types>

    <message name="getItemResponse">
        <part name="string" type="xsd:string" />
    </message>

     <message name="getItemRequest">
        <part name="return" type="xsd:string" />
    </message>

    <portType name="blogPortType">
        <operation name="getItem">
            <documentation>Returns a simple test string</documentation>
            <input message="typens:getItemRequest" />
            <output message="typens:getItemResponse" />
        </operation>
    </portType>

    <binding name="blogBinding" type="typens:blogPortType">
        <soap:binding style="rpc" transport="http://schemas.xmlsoap.org/soap/http"/>

        <operation name="getItem">
            <soap:operation soapAction="urn:blog#getItem" style="rpc" />
            <input>
                <soap:body use="encoded" namespace="urn:blog" encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" />
            </input>
            <output>
                <soap:body use="encoded" namespace="urn:blog" encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" />
            </output>
        </operation>
        
    </binding>

    <service name="blog">
        <port name="blogPort" binding="typens:blogBinding">
            <soap:address location="http://{siteUrl}/webservice/server.php" />
        </port>
    </service>
</definitions>

As you can see the WSDL consists of different parts:

– the namespace
– the types
– messages
– ports (the porttype contains the set of operations, each operation has its own input and output messages)
– bindings (tells how to transport the requests, it describes the protocol used, just like the ports it contains the set of operations used)
– service (defines the ports that are supported by the service, its a collection of ports)

The third step, map our Blog service class to the webserver

After we have created our WSDL we can start building our server. In just a few lines we have a SOAP server up and running.

 // Init the server
$oServer = new SoapServer('blog.wsdl');

// Register the blog service class and all the methods
$oServer->setClass('BlogService');

// Rock 'n roll
$oServer->handle();

The fourth and final step, test our webservice

Its a good idea to test the webservice with a program like soapUI, it often can provide some additional information when troubleshooting. (They have a free version available on their website).

To test our webservice in PHP we can use the following code:

ini_set("soap.wsdl_cache_enabled", "0"); // Disable the wsdl cache

$oClient = new SoapClient(
				// Url to our wsdl, http://{siteUrl}/webservice/index.php?wsdl is also possible
				'{siteUrl}/webservice/blog.wsdl', 
				array(
					'trace'  => true,
					'exceptions'=> true
				));

try {
	$aResult = $oClient->getItem(4);
	var_dump($aResult);
} catch (SoapFault $e) {
	exit($e->faultstring);
}

You should see a SOAP fault, because the id number 4 we gave to the getItem function didn’t exist in our Blog service class. Change the value to 1,2,3 or 5 and you should get a nice response back.
Another pretty neat function is $oClient->__getFunctions(); it will return all the function that are available in the webservice.

This was just a short introduction to SOAP, a lot more is possible with SOAP.
Special thanks to David Zuelke for the nice SOAP introduction at the PHPbenelux conference 2010.

Example files:
Webservice.rar

Just deploy the example files on your webserver, change the {siteUrl} values in the files with your domain and call the client.php

Written by Sjoerd Maessen

February 11th, 2010 at 1:26 pm

Posted in SOAP

Tagged with

17 Responses to 'Introduction into SOAP, setting up a simple webservice with PHP SOAP'

Subscribe to comments with RSS or TrackBack to 'Introduction into SOAP, setting up a simple webservice with PHP SOAP'.

  1. Thanks, really helpful! I was struggling for 3 days to get it right. Now I’ve got the correct setup!

    Ben

    27 Oct 11 at 2:27 pm

  2. Hi,

    Thanks to share this information. How can we create different class for different functionality of web service?

    jayendra

    11 Nov 11 at 2:14 pm

  3. online canadian pharmacy no prescription enclomiphene

    cheapest buy enclomiphene new zealand buy online

  4. kamagra en ligne sans ordonnance

    kamagra expédié contre remboursement le samedi

  5. buy androxal cheap online canada

    cheapest buy androxal generic in united states

  6. Online pharmacies no perscription flexeril cyclobenzaprine

    online order flexeril cyclobenzaprine cheap alternatives

  7. how to order dutasteride lowest price

    get dutasteride generic europe

  8. get gabapentin purchase line

    buying gabapentin generic online uk

  9. is there anything over the counter like fildena

    fildena shipped overnight no perscription

  10. cheap itraconazole cheap info

    cheap itraconazole generic extended release

  11. order staxyn buy germany

    buy staxyn generic drug india

  12. how to order avodart generic does it work

    cheapest buy avodart usa sales

  13. buy rifaximin for sale usa

    pfizer rifaximin canada

  14. canadian drug store xifaxan

    purchase xifaxan generic tablets

  15. generic kamagra canada žádný předpis

    generique kamagra

  16. Hello! I’m giving away a cash reward. To get yours, contact me on Telegram at @moneymake29_bot.

  17. Josephtog

    15 Oct 25 at 7:42 pm

Leave a Reply