dfg web services web services-eko bezero-aplikazioen … · 2008-02-12 · gfa web services - web...
TRANSCRIPT
GFA Web Services - Web Services-eko Bezero-aplikazioen Inplementazioa
| Gipuzkoa.net |Mugikortasuna eta Lurralde Antolaketa Departamentua
DFG Web Services Web Services-eko Bezero-aplikazioen
Inplementazioa
Lurralde Plangintzako Zerbitzua Gipuzkoako Foru Aldundia
2007ko otsaila
GFA Web Services - Web Services-eko Bezero-aplikazioen Inplementazioa
| Gipuzkoa.net |Mugikortasuna eta Lurralde Antolaketa Departamentua
Edukiak
1. Dokumentuaren deskribapena
2. .Net bezero-aplikatiboa
2.1. Sarrera
2.2. ‘Localizar por ID’ Web Service-aren aplikatibo kontsumitzaile bat sortzea
2.2.1. Aplikatiboari kontrolak gehitzea
2.2.2. C# Kodea
2.2.3. Adibidea probatu
2.2.4. Adibidea zabaldu
2.2.5. Zabaldutako adibidea probatu
3. Java bezero-aplikatiboa
3.1. Sarrera
3.2. Baldintzak
3.3. Burutu beharreko prozesuak
3.4. Iturburu-kodea
3.4.1. WSExecutor.java
GFA Web Services - Web Services-eko Bezero-aplikazioen Inplementazioa
| Gipuzkoa.net |Mugikortasuna eta Lurralde Antolaketa Departamentua
4. Web bezeroa
5. PHP bezero-aplikatiboa
5.1. Sarrera
5.2. Baldintzak
5.3. Iturburu-kodea
6. PDA Windows Mobile Aplikatiboa
6.1. Sarrera
6.2. PDA proiektua sortzea
6.3. ‘DibujarImagen’ Web Service-aren aplikatibo kontsumitzaile bat sortzea Añadir controles al aplicativo
6.3.1. Aplikatiboari kontrolak gehitzea
6.3.2. C# Kodea
6.3.3. Adibidea probatu emuladorearekin
GFA Web Services - Web Services-eko Bezero-aplikazioen Inplementazioa
| Gipuzkoa.net |Mugikortasuna eta Lurralde Antolaketa Departamentua
1 - Dokumentuaren deskribapena Dokumentu honek Web Services-eko aplikatibo kontsumitzaileen prototipoak
deskribatzen ditu, plataformaren gaur egungo bertsioan dauden Web Zerbitzu
Espazialen integrazioaren adibide gisa garatu direnak.
Inplementatutako prototipoak deskribatzen ditu eta bestelako garapen-
plataformetan beste bezero-aplikatiboak garatzeko gidaliburu gisa balio du.
Bezero-aplikatiboen lau prototipo zehazten dira lau teknologia ezberdinetan, Web
Zerbitzuen elkarreragingarritasuna erakusten dutenak.
Prototipoak inplementatzen dituzten lau teknologiak honakoak dira: .Net, Java,
Web-bezero bat eta php.
Badago .Net teknologian garatutako prototipo bat Plataformako Web Zerbitzu
ezberdinek eskainitako funtzionalitate osoa inplementatzen duena (Ikus
http://b5m.gipuzkoa.net/appws/publish.htm) Horren konplexutasuna dela-eta,
dokumentu honetan prototipo laburtu bat deskribatzen da.
2 - .Net bezero-aplikatiboa
2.1 - Sarrera
Microsoft-en .Net plataforman bezeroaren garapena Visual Studio 2005 garapen-
ingurunearekin eta C# programazio-lengoaiarekin burutu da. Deskribatzen den
prototipoa Localizar por ID delakoaren WebService-era sartzen da.
GFA Web Services - Web Services-eko Bezero-aplikazioen Inplementazioa
2.2 - ‘Localizar por ID’ Web Service-aren aplikatibo
kontsumitzaile bat sortzea
Data menutik, hautatu “Add New Data Source” aukera.
Wizard-eko lehenengo leihoa agertuko da.
| Gipuzkoa.net |Mugikortasuna eta Lurralde Antolaketa Departamentua
GFA Web Services - Web Services-eko Bezero-aplikazioen Inplementazioa
Hautatu "Web Service" aukera eta "Next" botoia, eta hurrengo leihoa, Web
erreferentziena, agertuko da.
"URL" testu-laukian, erabili nahi den Web Service-arekin bat datorren WSDL
fitxategia tekleatu.
Adibidea: Localizar por Id.
http://b5m.gipuzkoa.net/dfg-localizar-context-
root/LocalizarPorIdSoapHttpPort?WSDL
Segundo batzuren ondoren, zerbitzuak dituen metodoen zerrenda bat agertuko da.
| Gipuzkoa.net |Mugikortasuna eta Lurralde Antolaketa Departamentua
GFA Web Services - Web Services-eko Bezero-aplikazioen Inplementazioa
Hautatu "Add Reference" botoia eta hurrengo leihoa agertuko da.
"Finish" aukeratzean, Wizard-aren leihoa itxi egingo da eta automatikoki emaitzari
erreferentzia berria gehituko zaio eta "Data Source" sortuko da.
"Solution Explorer" leihoan Web erreferentzia berria agertuko da.
| Gipuzkoa.net |Mugikortasuna eta Lurralde Antolaketa Departamentua
GFA Web Services - Web Services-eko Bezero-aplikazioen Inplementazioa
Menutik ”Data->Show Data Sources” aukera hautatzean, Data Sources-en leihoa
agertuko da.
Datuen egitura esploratzeko ireki daitekeen Web Services-eko irteera-aldagai
bakoitzeko Data Source bat agertuko da.
| Gipuzkoa.net |Mugikortasuna eta Lurralde Antolaketa Departamentua
GFA Web Services - Web Services-eko Bezero-aplikazioen Inplementazioa
2.2.1 - Aplikatiboari kontrolak gehitzea
Web Service-aren erantzuna ikusteko, DataGrid bat gehitu daiteke DataSource-aren
ikonoa formulariora arrastatuz. Adibidean
“LocalizarPorIdUser_localizaridcallejero_Out -> objectOut ->listaDirecciones ”
egitura arrastatzen da zerbitzutik formulariora.
Web Service-era deitzeko, gehitu Button motako kontrol bat.
| Gipuzkoa.net |Mugikortasuna eta Lurralde Antolaketa Departamentua
GFA Web Services - Web Services-eko Bezero-aplikazioen Inplementazioa
| Gipuzkoa.net |Mugikortasuna eta Lurralde Antolaketa Departamentua
2.2.2 - C# Kodea
Web Service-era sartzeko kodea “button1_Click” metodoan sartzen da. Diseinu
moduan botoiaren gainean klik bikoitza eginez klase hutsa sortzen da kodifikazio
moduan.
using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Text; using System.Windows.Forms; namespace WindowsApplication1 { public partial class Form1 : Form { public Form1() { InitializeComponent(); } private void button1_Click(object sender, EventArgs e) { } } }
GFA Web Services - Web Services-eko Bezero-aplikazioen Inplementazioa
Gehitu kodearen hurrengo lerroak button1_Click() metodoari.
private void button1_Click(object sender, EventArgs e) { // Web Service klaseko instantzia berri bat sortu. net.gipuzkoa.b5m.LocalizarPorId webId = new net.gipuzkoa.b5m.LocalizarPorId(); // Geruza-array gehigarri nuluak. net.gipuzkoa.b5m.WsmapasselectUser[] nomArr = null; // Web Service-era deitu eta erantzuna jaso. net.gipuzkoa.b5m.LocalizarPorIdUser_localizaridcallejero_Out webIdOut=webId.localizaridcallejero("D_4545","","0","Si", "PUBLI", "200", "200", "NO", nomArr); // Erantzuna DataSource-i esleitu. listaDireccionesBindingSource.DataSource = webIdOut.objectOut.listaDirecciones; }
2.2.3 - Adibidea probatu
Aplikazioa exekutatu, eskaria Web Service-era bidaltzeko botoia sakatu eta
segundo batzuren ondoren, Grid-ean zerbitzuaren erantzuna agertuko da.
| Gipuzkoa.net |Mugikortasuna eta Lurralde Antolaketa Departamentua
GFA Web Services - Web Services-eko Bezero-aplikazioen Inplementazioa
2.2.4 - Adibidea zabaldu
Imagen=”Si” parametroarekin, zerbitzuak erabili ez den Id “D_4545”-arekin bat
datorren irudi bat sortu du. Atal honetan adibidea zabaltzen da irudia marrazteko.
Lehenengo diseinu moduan dagoen formulariora itzuli behar da eta mapa
erakusteko erabiltzen den PictureBox bat eta eraikinaren identifikadorea sartzeko
TextBox bat gehitu behar dira.
| Gipuzkoa.net |Mugikortasuna eta Lurralde Antolaketa Departamentua
GFA Web Services - Web Services-eko Bezero-aplikazioen Inplementazioa
| Gipuzkoa.net |Mugikortasuna eta Lurralde Antolaketa Departamentua
Jarraian irudiaren tratatzeko aldatutako metodoa agertuko da. Gainera, irudia
garbitzeko kodea eta DataSource-a aldatu dira, eta zerbitzua exekutatzen den
bitartean kurtsorearen egoera eguneratu da.
private void button1_Click(object sender, EventArgs e) { // Kurtsorea aldatu. Cursor.Current = Cursors.WaitCursor; // DataSource-a garbitu listaDireccionesBindingSource.Clear(); // Irudia garbitu. if (pictureBox1.Image != null) pictureBox1.Image = null; Refresh(); // Web Service klaseko instantzia berri bat sortu. net.gipuzkoa.b5m.LocalizarPorId webId = new net.gipuzkoa.b5m.LocalizarPorId(); // Geruza-array gehigarri nuluak. net.gipuzkoa.b5m.WsmapasselectUser[] nomArr = null; // Web Service-era deitu eta erantzuna jaso. net.gipuzkoa.b5m.LocalizarPorIdUser_localizaridcallejero_Out webIdOut = webId.localizaridcallejero (richTextBox1.Text, "", "0", "Si", "VITO", pictureBox1.Width.ToString(), pictureBox1.Height.ToString(), "NO", nomArr); // Erantzuna DataSource-i esleitu. listaDireccionesBindingSource.DataSource = webIdOut.objectOut.listaDirecciones; // Irudiaren URL-a jaso string IdCallUrl = Convert.ToString(webIdOut.imagenurlOut); // Mapa eskatu eta marraztu if (webIdOut.imagenurlOut != null) { WebRequest WReq = WebRequest.Create(IdCallUrl); WebResponse WRes = WReq.GetResponse(); Stream strm = WRes.GetResponseStream(); Image WImage = Image.FromStream(strm); pictureBox1.Image = WImage; } // Default cursor utzi. Cursor.Current = Cursors.Default; }
GFA Web Services - Web Services-eko Bezero-aplikazioen Inplementazioa
Gainera, proiektuari ondoko namespaces-ak gehitu behar zaizkio.
using System.Net; using System.IO;
2.2.5 - Zabaldutako adibidea probatu
Adibidearen bertsio berria exekutatu eta id-arekin bat datorren eraikinean mapa
agertuko da zentratuta.
Id-a aldatzean eta zerbitzua abiaraztean, aurreko eskariaren datuak ezabatuko dira
eta segundo batzuren ondoren, eskari berriaren datuak eta irudia agertuko dira.
| Gipuzkoa.net |Mugikortasuna eta Lurralde Antolaketa Departamentua
GFA Web Services - Web Services-eko Bezero-aplikazioen Inplementazioa
3. - Java bezero-aplikatiboa
3.1 - Sarrera Kasu honetan, era berean WSDL deskribapen-artxiboa erabiliz, Web Service bat
erabiltzen duen bezero bat javan nola inplementatzen den deskribatzen da.
3.2 – Baldintzak ECLIPSE WTP PROJECT softwarea erabiltzen da bezero motak sortzeko WSDL
deskribapen-artxibotik abiatuta. Software hori honako helbidetik deskargatu
daiteke:
http://www.eclipse.org/webtools/main.html
Aipatutako proiektuak beharrezko plugin guztiak eta Eclipse plataforma ditu;
beharrezko JVM-a 1.5 da.
http://java.sun.com/j2se/1.5.0/download.jsp
Bi kasuetan emandako url-etan deskribatzen diren instalazio-argiibideak jarraitu
behar dira.
| Gipuzkoa.net |Mugikortasuna eta Lurralde Antolaketa Departamentua
GFA Web Services - Web Services-eko Bezero-aplikazioen Inplementazioa
3.3 - Burutu beharreko prozesuak
Behin hori instalatuta, J2EE perspektibara sartuko gara eclipse plataformatik:
| Gipuzkoa.net |Mugikortasuna eta Lurralde Antolaketa Departamentua
GFA Web Services - Web Services-eko Bezero-aplikazioen Inplementazioa
Karpetan proiektu berri bat sortzen da: Dynamic Web Projets
Kasu honetan DFGWeb, eta wsdl deskribapen-artxiboa WSDL direktorioan jarriko
dugu. Behin eskuineko botoiarekin aukeratuta, irudian erakusten den bezala,
ondoko klaseak sortuko ditugu:
| Gipuzkoa.net |Mugikortasuna eta Lurralde Antolaketa Departamentua
GFA Web Services - Web Services-eko Bezero-aplikazioen Inplementazioa
Prozesuak zerbitzua egiaztatzeko beharrezkoak diren klase guztiak sortzen ditu;
halaber, zerbitzarietan jsp orri batzuei alta ematen die, egiaztatzeko.
| Gipuzkoa.net |Mugikortasuna eta Lurralde Antolaketa Departamentua
GFA Web Services - Web Services-eko Bezero-aplikazioen Inplementazioa
Java proiektu bat sortuko dugu zerbitzua egiaztatzeko:
Klasea WSExecutor.java, exekutatu daitekeena.
| Gipuzkoa.net |Mugikortasuna eta Lurralde Antolaketa Departamentua
GFA Web Services - Web Services-eko Bezero-aplikazioen Inplementazioa
| Gipuzkoa.net |Mugikortasuna eta Lurralde Antolaketa Departamentua
3.4. - Iturburu-kodea
3.4.1. - WSExecutor.java
Main:
public static void main(String[] args) {
WSExecutor we = new WSExecutor();
we.testTopo();
}
testTopo proba burutzen du:
private void testTopo() {
String topo = "DONOXTI";
String lengua = "0";
boolean bprint = true;
try {
WstopobjUser[] wu = dooToponimo(topo, lengua);
if (bprint == true) {
printData(wu);
}
} catch (Exception e) {
e.printStackTrace();
}
}
GFA Web Services - Web Services-eko Bezero-aplikazioen Inplementazioa
| Gipuzkoa.net |Mugikortasuna eta Lurralde Antolaketa Departamentua
eta dooToponimo funtzioa:
public WstopobjUser[] dooToponimo(String topo, String lengua) throws RemoteException {
//array de objetos a devolver
WstopobjUser[] wu = null;
//Creamos el proxy
BuscartoponimoProxy btp = new BuscartoponimoProxy();
//Creamos los parametros
Buscartoponimo parameters = new Buscartoponimo();
//asignamos valores
parameters.setToponimo(topo);
parameters.setLengua(lengua);
//ejecutamos el servicio
BuscartoponimoResponse bpr = btp.buscartoponimo(parameters);
//obtenemos el resultado
BuscartoponimoUser_buscartoponimo_Out bubo = bpr.getResult();
BigDecimal bd = bubo.get_return();
wu = bubo.getToponimoarrOut();
return wu;
}
GFA Web Services - Web Services-eko Bezero-aplikazioen Inplementazioa
| Gipuzkoa.net |Mugikortasuna eta Lurralde Antolaketa Departamentua
4. – Web bezeroa
AJAX teknologiak web aplikazioak garatzea ahalbidetzen du, dinamismo maila handi
batekin. Orokorrean, bezero-aldean aplikazioaren logika duen zerbitzari bati XML
eskariak burutzeko script lengoaia bat (Javascript, Jscript,...) erabiltzean datza.
Horrenbestez, AJAX, web zerbitzuetara deiak burutzeko erabil daiteke. Jarraian
zehaztuko dira plataformaren web zerbitzu bati JavaScript-en bitartez dei bat
burutzen dion web orri bat inplementatzeko eman behar diren pausoak.
Zehazki 'localizar objeto por ID' web zerbitzua erabiliko da, eta zehazki, kale-
izendegiaren gaian ID D_4545 duen eraikina bilatuko da. Bilaketaren hizkuntza
gaztelania izango da.
Objektua kokatzeko web zerbitzua jarraian adierazten den XML formatua duen
eskariaren zain dago:
<soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/">
<soap:Body
xmlns:ns1="http://com/dfg/webservices/LocalizarPorId.wsdl/types/">
<ns1:localizaridcallejeroElement>
<ns1:identificador>D_4545</ns1:identificador>
<ns1:escala>12000</ns1:escala>
<ns1:lengua>0</ns1:lengua>
<ns1:imagen>si</ns1:imagen>
<ns1:escenario>VITO</ns1:escenario>
<ns1:anchura>640</ns1:anchura>
<ns1:altura>480</ns1:altura>
</ns1:localizaridcallejeroElement>
</soap:Body>
</soap:Envelope>
GFA Web Services - Web Services-eko Bezero-aplikazioen Inplementazioa
| Gipuzkoa.net |Mugikortasuna eta Lurralde Antolaketa Departamentua
Javascript-ean eman beharreko lehenengo pausoa, beraz, web zerbitzura bidaliko
den XML dokumentua sortzea izango litzateke:
var xmlDoc = createNewDocument();
Hurrengo pausoa XML-ri goiburua jartzea izango litzateke:
var envelope = createElementNS(xmlDoc,
'http://schemas.xmlsoap.org/soap/envelope/', 'Envelope');
xmlDoc.appendChild(envelope);
var body = createElementNS(xmlDoc,
'http://schemas.xmlsoap.org/soap/envelope/', 'Body');
envelope.appendChild(body);
var parameterParent = body;
parameterParent = createElementNS(xmlDoc,
'http://com/dfg/webservices/LocalizarPorId.wsdl/types/',
'localizaridriosElement');
body.appendChild(parameterParent);
createElementNS() eta appendChild() funtzioek XML-ren egitura sortzen dute.
CreateElementNS() delakoarekin dokumentuan elementu berri bat sortzen da eta
appendChild() delakoarekin, dokumentuaren barruan hierarkia-ordena egokia
ematen zaio.
Hurrengo pausoa web zerbitzuak behar dituen parametroetako bakoitzari balioak
ematea izango litzateke. Eraikinaren identifikadorearen kasuan horrela izango
litzateke:
paramEl.appendChild(xmlDoc.createTextNode(D_4545));
parameterParent.appendChild(paramEl);
GFA Web Services - Web Services-eko Bezero-aplikazioen Inplementazioa
Aurreko pausoa eskariaren parametro bakoitzerako (hizkuntza, irudia, lekua,...)
burutzea beharrezkoa da.
Puntu honetan jada sortuta dago XML dokumentua; web orriak ikusiko balitz,
honela geratuko litzateke:
Eman beharreko hurrengo pausoa sortu den XML-a bidaltzen duen web zerbitzura deitzea da. Javascript-etik XML bidali ahal izateko, XmlHttpRequest objektua erabil daiteke, nabigatzaile gehienek inplementatzen dutena.
XmlHttpRequest objektua beste modu batera sortzen da, erabiltzen den Interneteko nabigatzailearen arabera. Hurrengo kodeak lortu nahi den objektua sortuko luke:
var req = null; if (window.XMLHttpRequest) { // Si no es Internet Explorer req = new XMLHttpRequest(); } else if (window.ActiveXObject) { //Si es Internet Explorer req = new ActiveXObject("Microsoft.XMLHTTP"); }
| Gipuzkoa.net |Mugikortasuna eta Lurralde Antolaketa Departamentua
GFA Web Services - Web Services-eko Bezero-aplikazioen Inplementazioa
| Gipuzkoa.net |Mugikortasuna eta Lurralde Antolaketa Departamentua
Behin sortuta konfiguratu egin behar da. Lehenengo egin beharreko eskari mota
(GET edo POST) pasatu behar zaio eta web zerbitzuaren url-a.
req.open("POST", url, false);
Ondoren, behar duen “Content-Type”-a konfiguratu behar zaio, kasu honetan,
"text/xml".
req.setRequestHeader("Content-Type", "text/xml");
Azkenik, XML-a bidal daiteke send() funtzioaren bitartez,
req.send(xmlDoc);
Aurreko kode guztia web zerbitzuaren URL-a eta bidali beharreko XML-a jasotzen
dituen eta zerbitzuaren erantzuna itzultzen duen funtzio batean bil daiteke.
Adierazitako kodea honakoa litzateke:
function invokeSync (url, xmlDoc) { var req = null; if (window.XMLHttpRequest) { // Si no es Internet Explorer req = new XMLHttpRequest(); } else if (window.ActiveXObject) { //Si es Internet Explorer req = new ActiveXObject("Microsoft.XMLHTTP"); } if (req) { req.open("POST", url, false); req.setRequestHeader("Content-Type", "text/xml"); req.send(xmlDoc); return req.responseXML; } }
GFA Web Services - Web Services-eko Bezero-aplikazioen Inplementazioa
| Gipuzkoa.net |Mugikortasuna eta Lurralde Antolaketa Departamentua
Web zerbitzura aurreko parametrokin deituz gero, honakoa itzuliko litzateke:
<?xml version="1.0" encoding="UTF-8"?> <env:Envelope xmlns:env="http://schemas.xmlsoap.org/soap/envelope/" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:ns0="http://com/dfg/webservices/LocalizarPorId.wsdl/types/"> <env:Body> <ns0:localizaridcallejeroResponseElement> <ns0:result> <ns0:imagenurlOut>http://arqfotos:9876/internet/GenaImageSourcer? ?IMAGEID=164566151176& RETCONTENTTYPE=image/png&RM=FALSE </ns0:imagenurlOut> <ns0:return>OK</ns0:return> <ns0:objectOut> <ns0:listaDirecciones> <ns0:array> <ns0:nombre>SALESIANOS, CONVENTO</ns0:nombre> <ns0:seccion>002</ns0:seccion> <ns0:numero>012 </ns0:numero> <ns0:terminoMunicipal xsi:nil="1"/> <ns0:nucleoUrbano xsi:nil="1"/> <ns0:distrito>02</ns0:distrito> <ns0:municipio>AZKOITIA | 017</ns0:municipio> <ns0:codigoPostal>20720</ns0:codigoPostal> <ns0:comarca xsi:nil="1"/> <ns0:calle>AIZKIBEL KALEA | 1240</ns0:calle> </ns0:array> </ns0:listaDirecciones>
GFA Web Services - Web Services-eko Bezero-aplikazioen Inplementazioa
<ns0:listaActividades xsi:nil="1"/> </ns0:objectOut> </ns0:result> </ns0:localizaridcallejeroResponseElement> </env:Body> </env:Envelope>
Web zerbitzuak itzulitako XML-a Javascript-en aztertu ahal izango litzateke
informazioa lortzeko eta era egokian web orri batean erakusteko, edo soilik
itzulitako XML-a erakuts daiteke:
| Gipuzkoa.net |Mugikortasuna eta Lurralde Antolaketa Departamentua
GFA Web Services - Web Services-eko Bezero-aplikazioen Inplementazioa
| Gipuzkoa.net |Mugikortasuna eta Lurralde Antolaketa Departamentua
Azkenik, dokumentu honetan eskaria burutzeko erabilitako funtzioen kode osoa eta
prozesu osoa burutzen duen funtzio nagusi berri bat erakusten dira. Funtzioa
LocalizarPorIdSoapHttpPort_localizaridcallejero() da eta parametro gisa web
zerbitzuaren eskaria burutzeko beharrezkoak diren datu guztiak jasotzen ditu,
beharrezko XML-a sortzen du, zerbitzura bidaltzen du eta azkenik, zerbitzariaren
erantzunaren XML-a itzultzen du.
function LocalizarPorIdSoapHttpPort_localizaridcallejero(_identificador, _escala, _lengua, _imagen, _escenario, _anchura, _altura) { var xmlDoc = createNewDocument(); var envelope = createElementNS(xmlDoc, 'http://schemas.xmlsoap.org/soap/envelope/', 'Envelope'); xmlDoc.appendChild(envelope); var body = createElementNS(xmlDoc, 'http://schemas.xmlsoap.org/soap/envelope/', 'Body'); envelope.appendChild(body); var parameterParent = body; parameterParent = createElementNS(xmlDoc, 'http://com/dfg/webservices/LocalizarPorId.wsdl/types/', 'localizaridcallejeroElement'); body.appendChild(parameterParent); var paramEl = createElementNS(xmlDoc, 'http://com/dfg/webservices/LocalizarPorId.wsdl/types/', 'identificador'); paramEl.appendChild(xmlDoc.createTextNode(_identificador)); parameterParent.appendChild(paramEl); var paramEl = createElementNS(xmlDoc, 'http://com/dfg/webservices/LocalizarPorId.wsdl/types/', 'escala'); paramEl.appendChild(xmlDoc.createTextNode(_escala)); parameterParent.appendChild(paramEl); var paramEl = createElementNS(xmlDoc, 'http://com/dfg/webservices/LocalizarPorId.wsdl/types/', 'lengua'); paramEl.appendChild(xmlDoc.createTextNode(_lengua)); parameterParent.appendChild(paramEl); var paramEl = createElementNS(xmlDoc, 'http://com/dfg/webservices/LocalizarPorId.wsdl/types/', 'imagen'); paramEl.appendChild(xmlDoc.createTextNode(_imagen)); parameterParent.appendChild(paramEl); var paramEl = createElementNS(xmlDoc, 'http://com/dfg/webservices/LocalizarPorId.wsdl/types/', 'escenario'); paramEl.appendChild(xmlDoc.createTextNode(_escenario)); parameterParent.appendChild(paramEl); var paramEl = createElementNS(xmlDoc, 'http://com/dfg/webservices/LocalizarPorId.wsdl/types/', 'anchura'); paramEl.appendChild(xmlDoc.createTextNode(_anchura)); parameterParent.appendChild(paramEl); var paramEl = createElementNS(xmlDoc, 'http://com/dfg/webservices/LocalizarPorId.wsdl/types/', 'altura'); paramEl.appendChild(xmlDoc.createTextNode(_altura)); parameterParent.appendChild(paramEl); var responseDoc = invokeSync('http://arqfotos:8888/dfg-
GFA Web Services - Web Services-eko Bezero-aplikazioen Inplementazioa
| Gipuzkoa.net |Mugikortasuna eta Lurralde Antolaketa Departamentua
loid/LocalizarPorIdSoapHttpPort', xmlDoc); return responseDoc; } function createElementNS (xmlDoc, namespace, localName) { var element = null; if (typeof xmlDoc.createElementNS != 'undefined') { element = xmlDoc.createElementNS(namespace, localName); } else if (typeof xmlDoc.createNode != 'undefined') { if (namespace) { element = xmlDoc.createNode(1, localName, namespace); } else { element = xmlDoc.createElement(localName); } } return element; }
function createNewDocument () { var xmlDoc = null; if (document.implementation && document.implementation.createDocument) { xmlDoc = document.implementation.createDocument("", "", null); } else if (window.ActiveXObject){ xmlDoc = new ActiveXObject("Microsoft.XMLDOM"); } return xmlDoc; } function invokeSync (url, xmlDoc) { var req = null; if (window.XMLHttpRequest) { req = new XMLHttpRequest(); } else if (window.ActiveXObject) { req = new ActiveXObject("Microsoft.XMLHTTP"); } if (req) { req.open("POST", url, false); req.setRequestHeader("Content-Type", "text/xml"); req.send(xmlDoc); return req.responseXML; } }
GFA Web Services - Web Services-eko Bezero-aplikazioen Inplementazioa
| Gipuzkoa.net |Mugikortasuna eta Lurralde Antolaketa Departamentua
5. - PHP bezero-aplikatiboa 5.1. – Sarrera Kasu honetan, era berean WDSL deskribapen-artxiboa erabiliz Web Service bat
erabiltzen duen bezero bat PHP-n nola inplementatzen den deskribatzen da.
5.2. – Baldintzak PHP-ren 5.1.2. Bertsioa
NUSOAP Liburutegia, 0.7.2. bertsioa (http://sourceforge.net/projects/nusoap)
5.3. - Iturburu-kodea.
1. Adibidea: Web zerbitzura deitu mapa marrazteko.
<?php // Liburutegiak kargatu. require_once('./lib/nusoap.php'); // Produkzioa $wsdl="http://b5m.gipuzkoa.net/ws/dfg-dibujar-context-root/DibujarSoapHttpPort?WSDL"; // WSDL-a irakurri eta proxy-ak sortu $client=new soapclient($wsdl, 'wsdl'); // URL endpoint-a aldatu $wsdl-ra, azkeneko 5 char-ak izan ezik $client->operations['dibujarimagen']['endpoint'] = substr($wsdl,0,strlen($wsdl)-5); // Char set-ak behartu. $client->soap_defencoding = 'UTF-8'; $client->decode_utf8 = false; // Geruzen kontrolaren adibidea. $mapasel=array('nombre'=>'L%EDmites municipales','estado'=>'n','tipo'=>'Mapa'); // Parametroen adibidea $params=array(array('ix1'=>'540000','iy1'=>'4740000','ix2'=>'610000','iy2'=>'4810000','iwidth'=>'500','iheight'=>'300','iescenario'=>'PUBLI','lengua'=>'0','mapaselectarr'=>$mapasel));
GFA Web Services - Web Services-eko Bezero-aplikazioen Inplementazioa
| Gipuzkoa.net |Mugikortasuna eta Lurralde Antolaketa Departamentua
// Akatsen egiaztapena. $err = $client->getError(); if ($err) { echo 'Constructor error' . $err ; } // Web Service-era deitu $result = $client->call('dibujarimagen', $params);
// Akatsen egiaztapena. if ($client->fault) { echo 'Fault'; print_r($result); } else { $err = $client->getError(); if ($err) { echo 'Error' . $err ; } } // Emaitzak ikusi print_r($result); // Arazteko tresnak //echo $client->response; //echo $client->request; //echo $client->debug_str; ?>
GFA Web Services - Web Services-eko Bezero-aplikazioen Inplementazioa
| Gipuzkoa.net |Mugikortasuna eta Lurralde Antolaketa Departamentua
UNIX-eko shell batetik PHP adibidea exekutatzen bada honako emaitza ikusiko da. . $ php dib.php Array ( [result] => Array ( [return] => 1 [oimagepathOut]=> http://b5m.gipuzkoa.net/internet/GenaImageSourcer?IMAGEID=2034743655&RETCONTENTTYPE=image/png ) ) Irudia berreskuratzeko http eskari bat exekutatu behar da oimagepathOut
aldagaiean emandako URL-arekin.
GFA Web Services - Web Services-eko Bezero-aplikazioen Inplementazioa
| Gipuzkoa.net |Mugikortasuna eta Lurralde Antolaketa Departamentua
2. Adibidea: Web zerbitzura deitu geruza erabilgarriak ikusteko.
<?php // Liburutegiak kargatu. require_once('./lib/nusoap.php'); // Produkzioa $wsdl="http://b5m.gipuzkoa.net/ws/dfg-dibujar-context-root/DibujarSoapHttpPort?WSDL"; // WSDL-a irakurri eta proxy-ak sortu $client=new soapclient($wsdl, 'wsdl'); // URL endpoint-a aldatu $wsdl-ra, azkeneko 5 char-ak izan ezik $client->operations['mapasdisponibles']['endpoint'] = substr($wsdl,0,strlen($wsdl)-5); // Char set-ak behartu. $client->soap_defencoding = 'UTF-8'; $client->decode_utf8 = false; // Parametroen adibidea $params1=array(array('categoria'=>'PUBLI','lengua'=>'0')); // Akatsen egiaztapena. $err = $client->getError(); if ($err) { echo 'Constructor error' . $err ; } // Web Service-era deitu. $result = $client->call('mapasdisponibles', $params1); if ($client->fault) { echo 'Fault'; print_r($result); } else { $err = $client->getError(); if ($err) { echo 'Error' . $err ; } else { // Ver los resultados print_r( $result ) ; } } ?>
GFA Web Services - Web Services-eko Bezero-aplikazioen Inplementazioa
| Gipuzkoa.net |Mugikortasuna eta Lurralde Antolaketa Departamentua
UNIX-eko shell batetik PHP adibidea exekutatzen bada honako emaitza ikusiko da. $ php mapas.php Array ( [result] => Array ( [return] => Array ( [wsmessage] => OK [wsstatus] => 5 ) [objectOut] => Array ( [0] => Array ( [MActivado] => s [GActivado] => S [clase] => AltimetrÃa [grupo] => Nada [descripcion] => AltimetrÃa 100 [mapa] => alti_100 [CActivado] => S ) [1] => Array ( [MActivado] => s [GActivado] => S [clase] => AltimetrÃa [grupo] => Nada [descripcion] => AltimetrÃa 25 [mapa] => alti_25 [CActivado] => S ) . . . ) ) )
GFA Web Services - Web Services-eko Bezero-aplikazioen Inplementazioa
| Gipuzkoa.net |Mugikortasuna eta Lurralde Antolaketa Departamentua
$ php mapas.php Array ( [result] => Array ( [return] => Array ( [wsmessage] => OK [wsstatus] => 5 ) [objectOut] => Array ( [0] => Array ( [MActivado] => s [GActivado] => S [clase] => AltimetrÃa [grupo] => Nada [descripcion] => AltimetrÃa 100 [mapa] => alti_100 [CActivado] => S ) [1] => Array ( [MActivado] => s [GActivado] => S [clase] => AltimetrÃa [grupo] => Nada [descripcion] => AltimetrÃa 25 [mapa] => alti_25 [CActivado] => S ) . . . ) ) )
GFA Web Services - Web Services-eko Bezero-aplikazioen Inplementazioa
6. - PDA Windows Mobile Aplikatiboa 6.1. – Sarrera PDA bezeroaren adibidea Microsoft-en .Net Compact Framework 2.0
plataformarekin, Visual Studio 2005 garapen-ingurunearekin eta C# programazio-
lengoaiarekin burutu da. Deskribatzen den prototipoa DibujarImagen delakoaren
WebService-era sartzen da.
6.2. - PDA proiektua sortzea
PDA baterako proiektua sortzeko, “Device Application” motako proiektu bat sortzen
da.
“OK” aukeratzean, formulario bat agertuko da PDA irudi baten barruan.
| Gipuzkoa.net |Mugikortasuna eta Lurralde Antolaketa Departamentua
GFA Web Services - Web Services-eko Bezero-aplikazioen Inplementazioa
6.3 ‘DibujarImagen’ Web Service-aren aplikatibo
kontsumitzaile bat sortzea
Data menutik, hautatu “Add New Data Source” aukera.
Wizard-eko lehenengo leihoa agertuko da.
| Gipuzkoa.net |Mugikortasuna eta Lurralde Antolaketa Departamentua
GFA Web Services - Web Services-eko Bezero-aplikazioen Inplementazioa
Hautatu "Web Service" aukera eta "Next" botoia, eta hurrengo leihoa, Web
erreferentziena, agertuko da.
| Gipuzkoa.net |Mugikortasuna eta Lurralde Antolaketa Departamentua
"URL" testu-laukian, erabili nahi den Web Service-arekin bat datorren WSDL
fitxategia tekleatu.
Adibidea: Dibujar.
http://b5m.gipuzkoa.net/dfg-dibujar-context-root/DibujarSoapHttpPort?WSDL
Segundo batzuren ondoren, zerbitzuak dituen metodoen zerrenda bat agertuko da.
GFA Web Services - Web Services-eko Bezero-aplikazioen Inplementazioa
Hautatu "Add Reference" botoia eta hurrengo leihoa agertuko da.
"Finish" aukeratzean, Wizard-aren leihoa itxi egingo da eta automatikoki emaitzari
erreferentzia berria gehituko zaio eta "Data Source" sortuko da.
| Gipuzkoa.net |Mugikortasuna eta Lurralde Antolaketa Departamentua
GFA Web Services - Web Services-eko Bezero-aplikazioen Inplementazioa
6.3.1. - Aplikatiboari kontrolak gehitzea
Web Service-a abiarazteko, Button motako kontrol bat gehitu behar da. Eta emaitza
ikusteko PictureBox motako kontrol bat gehitu behar da.
| Gipuzkoa.net |Mugikortasuna eta Lurralde Antolaketa Departamentua
GFA Web Services - Web Services-eko Bezero-aplikazioen Inplementazioa
| Gipuzkoa.net |Mugikortasuna eta Lurralde Antolaketa Departamentua
6.3.2. - C# Kodea Web Service-era sartzeko kodea “button1_Click” metodoan sartzen da. Diseinu
moduan botoiaren gainean klik bikoitza eginez klasea hutsik sortzen da kodifikazio
moduan
using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Text; using System.Windows.Forms; namespace DeviceApplication1 { public partial class Form1 : Form { public Form1() { InitializeComponent(); } private void button1_Click(object sender, EventArgs e) { } } }
GFA Web Services - Web Services-eko Bezero-aplikazioen Inplementazioa
| Gipuzkoa.net |Mugikortasuna eta Lurralde Antolaketa Departamentua
Gehitu kodearen hurrengo lerroak button1_Click() metodoari. private void button1_Click(object sender, EventArgs e)
{
// Array de capa adicionales a nulo.
net.gipuzkoa.b5m.WsmapasselectUser[] userArray1 = null;
Cursor.Current = Cursors.WaitCursor;
// Crear una nueva instancia de la clase del Web Service.
net.gipuzkoa.b5m.Dibujar webDibImg =
new net.gipuzkoa.b5m.Dibujar();
// Llama al Web Service y recoger la respuesta.
net.gipuzkoa.b5m.DibujarUser_dibujarimagen_Out out1 =
webDibImg.dibujarimagen("520000","4740000","610000",
"4810000", pictureBox1.Width.ToString(),
pictureBox1.Height.ToString(),
"PUBLI", "0", userArray1);}
// Pedir y dibujar el mapa Uri uri1 = new Uri(out1.oimagepathOut);
HttpWebRequest request1 =
(HttpWebRequest)WebRequest.Create(uri1);
HttpWebResponse response1 =
(HttpWebResponse)request1.GetResponse();
StreamReader reader1 = new
StreamReader(response1.GetResponseStream());
Bitmap bitmap1 = new Bitmap(reader1.BaseStream);
pictureBox1.Image = bitmap1;
reader1.Close();
Cursor.Current = Cursors.Default;
}
GFA Web Services - Web Services-eko Bezero-aplikazioen Inplementazioa
6.3.3 - Adibidea probatu emuladorearekin. Aplikazioa exekutatzean, zabaltzen den ondoko leihoa agertuko da.
“Pocket PC 2003 SE Emulator” aukera hautatu eta “Deploy” botoia sakatu.
Software-a emuladorean instalatuko da eta leiho bat agertuko da, aplikazioa
martxan duena.
| Gipuzkoa.net |Mugikortasuna eta Lurralde Antolaketa Departamentua
GFA Web Services - Web Services-eko Bezero-aplikazioen Inplementazioa
Interneteko konexioa ezartzeko ActiveSync-ekin konexio fisikoa emulatu behar da
eta hori “Device Emulator Manager” delakoarekin egiten da, “Tools” menutik
abiarazten dena.
| Gipuzkoa.net |Mugikortasuna eta Lurralde Antolaketa Departamentua
“Emulator Manager” delakoa abiarazi ondoren, “Pocket PC 2003 SE Emulator”
aukera hautatu behar da eta eskuineko botoiarekin, “Cradle” aukera hautatu.
GFA Web Services - Web Services-eko Bezero-aplikazioen Inplementazioa
ActiveSync-en ikono grisa berde bihurtuko da eta asoziazio-leihoa “Guest” aukera
hautatu daitekeen lekuan agertuko da. Behin konektatuta, eskaria Web Service-era
bidaltzeko botoia sakatu eta segundo batzuren ondoren, Gipuzkoaren irudi bat
agertuko da.
| Gipuzkoa.net |Mugikortasuna eta Lurralde Antolaketa Departamentua