Webszolgáltatások

Az interneten, vagy belső hálózatunkon lehetnek un. webszolgáltatások. Ezek tulajdonképpen olyan osztályok, amelyek egy webkiszolgálóra vannak telepítve, http protokoll segítségével távolról is elérhetők és metódusaik, tulajdonságaik hasonlóan kezelhetők, mint a helyi osztályoké.

Nézzünk erre pár olyan példát, ahol a webszolgáltatás nyilvánosan elérhető az interneten. Erre legalkalmasabbak azok a webszolgáltatások, amelyek rendelkeznek WSDL leíró oldallal. Ez tulajdonképpen egy XML formátumú adatblokk, ami definiálja, hogy milyen tulajdonságai és metódusai vannak a webszolgáltatásnak, így ezt könnyen be lehet importálni a PowerShell alá.

Nézzünk erre egy konkrét példát! A http://www.webservicex.net oldalon sok ilyen szolgáltatás érhető el, nézzük az IP címből földrajzi helyet meghatározó szolgáltatást:

[1] PS C:\> $geoip = New-WebServiceProxy -Uri http://www.webservicex.net/geoips

ervice.asmx?WSDL

[2] PS C:\> $geoip | gm

 

 

   TypeName: Microsoft.PowerShell.Commands.NewWebserviceProxy.AutogeneratedTyp

es.WebServiceProxy1cex_net_geoipservice_asmx_WSDL.GeoIPService

 

Name                                 MemberType Definition

----                                 ---------- ----------

Disposed                             Event      System.EventHandler Dispose...

GetGeoIPCompleted                    Event      Microsoft.PowerShell.Comman...

GetGeoIPContextCompleted             Event      Microsoft.PowerShell.Comman...

Abort                                Method     System.Void Abort()

BeginGetGeoIP                        Method     System.IAsyncResult BeginGe...

BeginGetGeoIPContext                 Method     System.IAsyncResult BeginGe...

CancelAsync                          Method     System.Void CancelAsync(Sys...

CreateObjRef                         Method     System.Runtime.Remoting.Obj...

Discover                             Method     System.Void Discover()

Dispose                              Method     System.Void Dispose()

EndGetGeoIP                          Method     Microsoft.PowerShell.Comman...

EndGetGeoIPContext                   Method     Microsoft.PowerShell.Comman...

Equals                               Method     bool Equals(System.Object obj)

GetGeoIP                             Method     Microsoft.PowerShell.Comman...

GetGeoIPAsync                        Method     System.Void GetGeoIPAsync(s...

GetGeoIPContext                      Method     Microsoft.PowerShell.Comman...

GetGeoIPContextAsync                 Method     System.Void GetGeoIPContext...

GetHashCode                          Method     int GetHashCode()

GetLifetimeService                   Method     System.Object GetLifetimeSe...

GetType                              Method     type GetType()

InitializeLifetimeService            Method     System.Object InitializeLif...

ToString                             Method     string ToString()

AllowAutoRedirect                    Property   System.Boolean AllowAutoRed...

ClientCertificates                   Property   System.Security.Cryptograph...

ConnectionGroupName                  Property   System.String ConnectionGro...

Container                            Property   System.ComponentModel.ICont...

CookieContainer                      Property   System.Net.CookieContainer ...

Credentials                          Property   System.Net.ICredentials Cre...

EnableDecompression                  Property   System.Boolean EnableDecomp...

PreAuthenticate                      Property   System.Boolean PreAuthentic...

Proxy                                Property   System.Net.IWebProxy Proxy ...

RequestEncoding                      Property   System.Text.Encoding Reques...

Site                                 Property   System.ComponentModel.ISite...

SoapVersion                          Property   System.Web.Services.Protoco...

Timeout                              Property   System.Int32 Timeout {get;s...

UnsafeAuthenticatedConnectionSharing Property   System.Boolean UnsafeAuthen...

Url                                  Property   System.String Url {get;set;}

UseDefaultCredentials                Property   System.Boolean UseDefaultCr...

UserAgent                            Property   System.String UserAgent {ge...

A New-WebServicesProxy  cmdlet segítségével lehet ilyen WSDL definíciós oldalakhoz csatlakozni, és ez a cmdlet egy helyi objektumot farag a távoli definíció alapján számunkra. Én ezt itt most a $geoip változóban tároltam és kilistáztam a tagjellemzőit.

Ezen webszolgáltatások általában működnek szinkron és aszinkron módon is. Szinkron módban elküldjük a kérést és várakozunk addig, amíg meg nem kapjuk a választ. Az aszinkron esetben elküldjük külön a kérést, és vissza is kapjuk a vezérlést. Majd lekérdezhetjük, hogy megszületett-e a válasz, ha igen, akkor lekérjük azt. Itt is megtaláljuk ezt a kétfajta működést a metódusok között.

Alapvetően két funkciót tudunk elérni ezen webszolgáltatás segítségével. Az egyik egy tetszőleges IP címhez tartozó földrajzi információk lekérdezése, a másik a hívó végpont IP címének és földrajzi információinak lekérdezése. Mindkettő elérhető mind szinkron és aszinkron módon is. Nézzük a szinkron üzemmódot, mert az az egyszerűbb:

[3] PS C:\> $geoip.GetGeoIPContext()

 

 

ReturnCode        : 1

IP                : 81.183.172.25

ReturnCodeDetails : Success

CountryName       : Hungary

CountryCode       : HUN

 

 

 

[4] PS C:\> $geoip.GetGeoIP("213.214.215.216")

 

 

ReturnCode        : 1

IP                : 213.214.215.216

ReturnCodeDetails : Success

CountryName       : Sweden

CountryCode       : SWE

A GetGeoIPContext() metódus a saját gépemre vonatkozó adatokat írta ki, azaz hogy egy sikeres lekérdezés történt, az én IP címem 81.183.172.25 és én Magyarországon tartózkodom. A GetGeoIP() metódus meg tetszőleges IP címre adja meg ugyanezen adatokat, az én találomra begépelt címem épp svédországi.



Word To HTML Converter