DiscZero

PHP SOAP

March 15th, 2008

SOAP (Simple Object Access Protocol) = Useful way to communicate with different machines. SOAP is used with java quite a lot, but not so much with PHP. However doing the same stuff with php is rather easyish.Prequisits:

  • PHP with lib2xml and SOAP (dll) installed and enabled
  • Of course, you need Apache.

The easiest part is propably the server. When client sends the request, the request is forwarded to a php-script, and one single function call occurs. The soap-server needs to be initiated within the script, and the method registerd. The server initialitation:

<pre style=’font-size:100%’>

ini_set(“soap.wsdl_cache_enabled”, “0″); // disabling WSDL cache

$server = new SoapServer(“SoapServerTest.wsdl”);

$server->addFunction(“getInfo”);

$server->handle();

</pre>

The ini-value, even when set from php.ini, didn’t seem to work for me. Now the SOAP -server is running, and one function, ”getInfo”, is registered. The handle -function executes the call, when script is run. The function is just simple php-function. If parameters are sent through SOAP, the are as parameters of the function.

<pre style=”font-size: 150%”>

function getInfo($param) {

return “This is php soap server:” . $param;

}

</pre>

 

And return value is sent as response. The client is created sort of similar way (short and easy, that is):

<pre style=”font-size: 150%”>

$client = new SoapClient(“http://yourLogin:yourPassword@127.0.0.1/tests/SoapServerTest.wsdl”, array(

“login” => “yourLogin”,

“password” => “yourPassword”,

“trace” => 1,

“exceptions” => 0));

 

echo $client->getInfo(“Possu!”);

</pre>

A new SOAPClient object is created, and as parameter there is the address of the service. The client then calls the getInfo -parameter. You can check the sent / received requests by:

<pre style=”font-size: 150%”>

print “<pre>\n”;

print “Request :\n”.htmlspecialchars($client->__getLastRequest()) .“\n”;

print “Response:\n”.htmlspecialchars($client->__getLastResponse()).“\n”;

print “</pre>”;

</pre>

The SOAP envelope and SOAP body are created by the SOAP -class. Now the most complex (at least for me) part is missing, that wsdl -thingie. WSDL (Web Service Definition Language) is, surprisingly, language to define web services. Some parts on the WSDL to show:

<pre style=”font-size:150%;”>

<message name=’getInfoRequest’>

<part name=’MyStringParameter’ type=’xsd:string’/>

</message>

</pre>

Inside that message more parameters can be added. The XML -payload within the SOAP body is about:

<pre style=”font-size:150%;”>

<SOAP-BODY>

<MyStringParameter>

Possu!

</MyStringParameter>

</SOAP-BODY>

</pre>

In the longish WSDL names need to equal to types, etc… but these are easy to figure out.

When sending xml as parameters to the SOAP server, the xml can be sent string, thou this is quite baddish practise. To do it right, you need to define the types with xsd:

<pre style=”font-size:150%;”>

<message name=’getInfoRequest’>

<part name=’MyComplexParameter’ type=’tns:ComplexVariable’/>

</message>

</pre>

And with XSD:

<pre style=”font-size:150%;”>

<types>
	<schema>
           <element name="ComplexVariable">
               <complexType>
                   <sequence>
                       	<element name="SomeStuff" type="string"/>
				<element name="AnotherParameter" type="string"/>
                   </sequence>
               </complexType>
           </element>
	</schema>
</pre>

And so on… I’ve been working only with simple parameters, making the SOAP -client usually with Java. The wholse WSDL -file for working test:

<pre style=”font-size:150%;”>

<?xml version =’1.0′ encoding =’UTF-8′ ?>

<definitions name=’MySOAPTest’

targetNamespace=’http://example.org/MySOAPTest’

xmlns:tns=’ http://example.org/MySOAPTest ‘

xmlns:soap=’http://schemas.xmlsoap.org/wsdl/soap/’

xmlns:xsd=’http://www.w3.org/2001/XMLSchema’

xmlns:soapenc=’http://schemas.xmlsoap.org/soap/encoding/’

xmlns:wsdl=’http://schemas.xmlsoap.org/wsdl/’

xmlns=’http://schemas.xmlsoap.org/wsdl/’>

 

<message name=’getInfoRequest’>

<part name=’MyStringParameter’ type=’xsd:string’/>

</message>

<message name=’getInfoResponse’>

<part name=’Result’ type=’xsd:string’/>

</message>

 

<portType ename=’InfoPortType’>

<operation name=’getInfo’>

<input message=’tns:getInfoRequest’/>

<output message=’tns:getInfoResponse’/>

</operation>

</portType>

 

<binding name=’InfoBinding’ type=’InfoPortType’>

<soap:binding style=’rpc’

transport=’http://schemas.xmlsoap.org/soap/http’/>

<operation name=’getInfo’>

<soap:operation soapAction=’urn:xmethods-delayed-quotes#getInfo’/>

<input>

<soap:body use=’encoded’ namespace=’urn:xmethods-delayed-quotes’

encodingStyle=’http://schemas.xmlsoap.org/soap/encoding/’/>

</input>

<output>

<soap:body use=’encoded’ namespace=’urn:xmethods-delayed-quotes’

encodingStyle=’http://schemas.xmlsoap.org/soap/encoding/’/>

</output>

</operation>

</binding>

<service name=’InfoService’>

<port name=’InfoPortType’ binding=’InfoBinding’>

<soap:address location=’http://127.0.0.1/tests/SoapServerTest.php’/>

</port>

</service>

</definitions>

</pre>

More stuff to read:

 

Rudyard Kipling – Kadonnut Legioona

March 14th, 2008

 Novelleista valikoinut ja suomentanut Yrjö Kivimies

 Otava 1955

Kiplingiltä tunnetuin tekonen on tietysti viidakkokirja. Itse en ole lukenut, eikä näin tarkemmin ajatellen ole mitään havaintoa siitä, minkälainen opus on. Mieleen tulee tietysti lastenkirja, onhan Disney piirtänyt oman viidakkokirjansa lapsukaisille. Näytelmänä olen tainnut nähdä joskus yli 20 vuotta sitten.

Kirja sisältää kahdeksan novellia, jotka kaikki sijoittuvat Afganistan-Intia -osastolle. Lisäksi yhteistä kaikille tarinoille on brittiläinen mies. Joka tietysti on kovempi ja kauniimpi kuin kukaan. Muut kansat ovat useimmiten alkukantaisia, taikauskoisia barbaareja. Joka tietysti siihen maailmanaikaan piti jossain määrin paikkansa. Mielenkiintoisia tarinoita ja kertomuksia, jotka eivät kuitenkaan sen kummemmin sävähdytä. Eipäs tässä sen kummempia…

*** / 5

 

Fred Hoyle - Los Angeles ei vastaa

February 24th, 2008

1966 – Yhteiskirjapaino Oy Helsinki 1966

October the first is too late

Aika-avaruus on vääristynyt, kaikkea kummaa sattuu ja tapahtuu nuorelle miehelle, joka tuntuu kuljeskelevan maailman mantereilla tuosta vain kepeästi. Idea on oikein viehättävä, visiot maukkaita, tekstistä selvästi tuntuu Hoylen fysiikan tuntemus. Minulla meni vuosia, kunnes täysin sisäistin sen, että kirjoissa hahmojen kertomat kuvitelmat ja ajatusleikit ovat siis tietysti kirjailijan omia ajatusleikkejä, jotka on helpompi kertoa, kun ne asettaa jonkun toisen suuhun, jolla ikään kuin olisi paikka, ja joskus auktoriteetti, ne kertoa uskottavasti silloin, kun ne mihinkään muuhun asiayhteyteen eivät oikein sovellu. Kirja on täynnä moista ajatusleikkiä ja visiota. Kerronnan kustannuksella.

Idea siis varsin mainio, ajan sekoittumisen leikki ja eri aikojen vuorovaikutus, ihmiskunnan kehitys – kaikki kertovat mielenkiintoisia näkemyksiä siitä mikä ihminen ja maailma on. Ihmisten väliset suhteet, itse tarina, tai tässä tapauksessa oikeastaan kehyskertomus, on paikoitellen harmillisen kömpelöä. Henkilöt jäävät latteiksi, ja jossain kohdassa tarinasta katoaa kaikki uskottavuus. Vaan eipä anneta sen häiritä, ja luetaan vain kiltisti Hoylen visioista. Musta Pilvi oli mahtava, kun luin sen viisitoistavuotiaana, Los Angeles ei vastaa on ihan menettelevä. Pitänee lukea Musta pilvi uudestaan, josko on ajan hammas siihen päässyt puremaan. Tai oikeastaan onko ajan hammas minuun purrut, onhan kirja minua huomattavasti vanhempi.

*** / 5

Howard Waldrop – Vain vanhat luut

February 24th, 2008

ISBN 951-0-17942-6

1984 – WSOY 1992

Kirjan tapahtumapaikkana on vaihtoehtotulevaisuus, josta lähdetään matkalle sekä vaihtoehto- että ihan normimenneisyyteen. Waldrop kirjoittaa muutamaa päällekkäistä tarinaa, jotka ovat joiltain osin kietoutuneita toisiinsa. Tarinassa tutkitaan amerikan historiaa ennen länsimaista invaasiota, ja kuinka nykyihminen voisi moiseen suhtautua. Tarina on sinänsä mielenkiintoinen, ja herättää paikoitellen halukkuutta kuulla lisää jostain mahdollisuudesta, joka sinänsä on yleensä tarinassa erinomainen piirre. Tarina jää mieleen elämään, ja siihen lisää tai siitä jatkaa mielessään joitain variaatioita. Tämä ilmiö minulla ilmenee hyvin harvoin varsinaisessa kaunokirjallisuudessa, ja on huomattavasti yleisempi scifissä ja fantasiakirjallisuudessa.

Kuitenkaan Vain vanhat luut eivät yllä mihinkään huikeaan tarinankerrontaan, ja jää paikoitelleen kiertelemään samaa ajatusta edes takaisin. Ajatus ei juokse, paikoitellen tapahtumat on sekavasti kerrottu – osin tämän jätän tosin suomentaneen Leena Tammisen vastuulle – vaikka voin toki olla väärässäkin, alkuperäiskielellä en toki ole kirjaa lukenut. Tarinasta ei kovin valmista tule, ja kerronta on kevyttä, mutta ideana silti mielenkiintoinen. Siinä ja siinä, mutta eiköhän tuokin lukea kannata, jos ei ole kovin lajityyppi tuttu.

*** / 5

Osta BookPlussasta

Eternal life

February 10th, 2008

Human lifespan to be expanded up to 800 years. By somehow … fixing genes. Unfortunately, propably too late for me. I’ve never really been able to accept the fact that I will die one day. Obviously, my childhood hasn’t ended yet.

 From io9: http://io9.com/345728/geneticists-discover-a-way-to-extend-lifespans-to-800-years

Minttuteetä ja Topi

February 10th, 2008

Mint tea and Topi the Saltcat

Great wall of Finland

February 10th, 2008

Näinhän siinä sitten kävi. Lapsipornosivustojen estolaki saatiin menestyksekkäästi läpi reilu vuosi sittten. Nyt ei vahingossakaan satunnainen surffailija pääse törmäämään epäilyttävään materiaaliin. Eikä lakia tietenkään käytetä mihinkäään muuhun tarkoitukseen kuin moisen saastan kitkemiseen, eihän? Paitsi ehkä piraattimusiikin levittämiseen, kuten Tietokone -lehti uutisoi. ÄKT pyrkii siis estämään Pirate Bay -sivustolle pääsyn. Kun kerran lapsipornoa on alettu estää, niin kynnys muun materiaalin estämiseen on huomattavasti matalampi. Matkaa Suomessa poliittisesti epäkorrektin materiaalin blokkaamiseen toki on, mutta voisin lyödä vetoa että, parin vuoden sisällä huumeista informaatiota jakavien sivustojen, kuten esimerkiksi Lycaeum ja Suomen Kannabisyhdistys, blokkausta aletaan ajamaan.

blockedinfinland.jpg

Solution to global warming

November 20th, 2007

Member of Finnish parliament, Annika Lapintie (left), demands strict regulations instead of incentives, which have proved to be inefficient, in order to save the suffering Baltic Sea. According to Annika, if all 9 countries around Baltic Sea would cut their environmental load by 4 percent, that would mean total of 36 percent! In environmentalism, small actions can make miracles! 

Now let’s imagine we could bring the percentage up to 11. This would mean that polluting of Baltic Sea could be cut down by 99%. There is 27 countries in EU. By regulation the carbon dioxin emission could be cut down by 3,5%. This would mean total of 94,5% decrease of CO emission in EU. Magnificent!

Second hand condoms

November 14th, 2007

In China used condoms are used as hair ties. And sold as well. Well, I guess it’s not too widespread habit, but next time when I will buy hair ties, I will think twice. Oh, I cut my hair few months back, so that’ll be a while.

And  I just love the notification I get from the site.

cn.jpg

Istanbul 2005

November 3rd, 2007

Collection of pics from 2 years back.

pict0341.jpgpict0344.jpgpict0371.jpgpict0482.jpgpict0505.jpgpict0634.jpgpict0694.jpgpict0714.jpgpict0723.jpgpict0742.jpgpict0761.jpgpict0762.jpgpict0788.jpgpict0799.jpgpict0805.jpgpict0807.jpgpict0808.jpgpict0809.jpgpict0872.jpgpict0883.jpgpict0935.jpgpict0936.jpgpict0939.jpgpict0943.jpgpict0962.jpgpict0973.jpgpict0975.jpg