Consumare un Web service

di: Angelo Ranucci     20 Giugno 2006

Finalmente possiamo creare la pagina che fruisce del servizio, una pagina in cui possiamo inserire il simbolo del titolo azionario che ci interessa in una TextBox, e che, dopo aver cliccato su un Button, restituisca la quotazione in una Label. Un esempio è il seguente:

Figura 4. Realizzare la pagina per consumare il servizio

Realizzazione della pagina per consumare il servizio

La pagina è molto semplice e dobbiamo solo gestire l'evento del click sul bottone. Con un doppio click passiamo alla parte codice interno ed implementiamo il metodo btnOttieniQuotazione_Click. Dobbiamo istanziare un oggetto della classe StockQuote, quindi digitiamo sto. Notiamo che l'intellisense del VWD riconosce il comando e ci propone il nome della classe StockQuote.

Figura 5. Suggerimento dell'intellisense

Suggerimento dell'intellisense

Possiamo quindi affermare che la classe proxy è stata generata dinamicamente. Utilizzando l'intellisense andiamo avanti nell'implementazione dell'esempio. Il codice completo del metodo per ottenere la quotazione è il seguente:

Listato 1. btnOttieniQuotazione_Click

protected void btnOttieniQuotazione_Click(object sender, EventArgs e)
{
  StockQuote ws = new StockQuote();
  lblQuotazione.Text = ws.GetQuote(tbSimbolo.Text);
}

Salviamo e testiamo la nostra applicazione.

Mettiamo ad esempio il simbolo GE della General Electric e premiamo il pulsante. Otteniamo:

Figura 6. Consumo del servizio Stock Quote

Consumo del servizio

Nella quotazione che ci ritorna abbiamo molte informazioni che possiamo naturalmente parsare. Possiamo notare da sinistra verso destra: il simbolo, l'ultima quotazione, la data della quotazione, l'ora etc. Per completezza riportiamo lo schema a cui possiamo attingere per parsare la stringa:

Listato 2. Stringa in formato XML

<StockQuotes>
<Stock>
<Symbol>GE</Symbol>
<Last>34.33</Last>
<Date>5/26/2006</Date>
<Time>4:00pm</Time>
<Change>-0.09</Change>
<Open>34.47</Open>
<High>34.53</High>
<Low>34.10</Low>
<Volume>21190100</Volume>
<MktCap>357.0B</MktCap>
<PreviousClose>34.42</PreviousClose>
<PercentageChange>-0.26%</PercentageChange>
<AnnRange>32.21 - 37.13</AnnRange>
<Earns>1.579</Earns>
<P-E>21.80</P-E>
<Name>GEN ELECTRIC CO</Name>
</Stock>
</StockQuotes>

Se avessimo voluto consumare il servizio Web senza generare dinamicamente la classe proxy avremmo dovuto aggiungere una Web Reference al nostro progetto, quindi inserire l'URL del servizio e poi istanziare un oggetto con l'istruzione:

net.webservicex.www.StockQuote ws = new net.webservicex.www.StockQuote();

In definitiva il nostro metodo sarebbe stato:

Listato 3. Metodo senza generazione dinamica della classe proxy

protected void btnGetQuote_Click(object sender, EventArgs e)
{
  net.webservicex.www.StockQuote ws = new net.webservicex.www.StockQuote();
  lblStockQuote.Text = ws.GetQuote(tbCompanySymbol.Text);
}

Il sorgente dell'esempio sviluppato in questo articolo può essere scaricato da qui.

Guide ASP.Net

Guida Windows Azure Code Snippets

Le migliori pratiche per far girare le applicazioni "in the cloud",...

Guida ASP.NET MVC Best Practices

Un workflow dettagliato e ricco di suggerimenti pratici per...

Guida ASP.NET Starter Kit

Un modo semplice per imparare ad utilizzare le tecnologie Microsoft...

Altre guide

Newsletter @Microsoft Dev

Ogni giovedì, direttamente nella tua e-mail: articoli, guide, tutorial e script ASP, ASP.Net, SQL server e IIS.

Iscriviti alla newsletter

Altre newsletter

Corsi in aula

Corso Progettazione database

11 Maggio 2012 a Milano
Disponibilità: 6 Posti

Amministratore di Reti Windows Server 2008

11 Giugno 2012 a Milano
Disponibilità: 5 Posti

Nessun corso previsto