Jak na WSDL – je libo powershell nebo php

Pokud se často pohybujete ve světě počítačů, možná jste zaslechli onu divnou zkratku WSDL. Dnes se velmi ve zkratce pokusím vysvětlit co to vlastně je, a jak se s tím pracuje.

WSDL je v podstatě rozhraní vaší aplikace vystavené do světa, pomocí webové služby. Prostřednictvím WSDL jste schopni některou vaši funkci i se všemi parametry zpřístupnit komukoliv, kdo má přístup a autorizaci k vámi vystavené uri adrese.

Pokud tedy máte v aplikaci například funkci getWeather(string sRegion), můžete tuto funkci zavolat přes WSDL, které vám následně pošle zpět relevantní data, jednou pro Paris jindy pro Prague.

Z výše uvedeného je jasné, že ten kdo chce použít WSDL musí něco vědět o implementaci skryté za touto službou. Pokud by jste věděli že dané WSDL rozhraní má poskytovat informace o počasí ale neznali funkci kterou máte zavolat, těžko by se vám hádalo jak ji autor pojmenoval. vratPocasi(int iRegion)? nebo snad getWthr(bool isForPrague)? Varianty jsou nekonečné.

Tuším že nějaký způsob jak se z WSDL dozvědět něco o implementaci existuje. Něco jako __getObjects() atp. Vzhledem k tomu, že jsem v mém případě o implementaci z dodané dokumentace věděl vše potřebné, nemusel jsem nic z těchto postupů využívat.

Nyní již ukázka skriptu pro zjištění dat v powershell

try{
 $client = New-WebServiceProxy -uri "http://some.uri.cz/some.asmx?WSDL" -NameSpace "WebServiceProxy" -Class "SomeClassFromDoc"
 if($client.SomeFunction("heslo")[0].ID -eq "01" -and $client.SomeFunction("heslo")[0].From -eq "Prague")
 {
  return 0
 }
 else{
  return 1
 }
}
catch{
 return 2 
}

 

V případě php by skript vypadal takto:

<?php
try{
 $client = new SoapClient('http://some.uri.cz/Service.asmx?WSDL');
 $result = $client->SomeFunction(array('somekey' => 'heslo'));
 $array = $result->SomeObject->SomeObject2;
 if($array[0]->ID == "01" && $array[0]->From == "Prague"){
  exit(0);
 }
 else {
  exit(1);
 }
}
catch(SoapFault $e){
 exit(2);
}
?>

Client se díky WSDL stává objektem našeho interního programu, se všemi jeho vlastnostmi. Voláme je tedy stejně, jako bychom byli v našem projektu a v našem SDK, i když jsme ve skutečnosti v prostředí powershellu či php.

SomeClass a SomeFunction… jsou objekty které definoval programátor uvnitř své aplikace, a které pomocí WSDL vystavil do internetu.

 

Leave a Reply

Your email address will not be published. Required fields are marked *