VB.NET e webservices

sabato 26 gennaio 2008 - 10.52

peppocka Profilo | Newbie

Ciao a tutti.
Sto cercando di creare una mini applicazione di test per verificare le potenzialitò dei web services in applicazioni desktop.
Tuttavia ho il problema che riesco a ricevere le informazioni ma non ad inviarle...
Questo è il codice:

Il codice sorgente non è stato renderizzato qui
perchè non c'è sufficiente spazio.
Clicca qui per visualizzarlo in una nuova finestra

Il server resituisce NOT Found, io devo riuscire in qualche modo ad inviare wsGeoIp.GetGeoIP(IPAddress:=IPBox.Text) ma non ci riesco...
Riuscite a darmi una mano?
Grazie, Peppe

freeteo Profilo | Guru

ciao,
ma che webservice stai usando? come hai fatto il riferimento a quel webservice?
Io programmo in c#, quindi non so se in vb.net sia corretta una sintassi tipo "IPAddress:=IPBox.Text".

Tipicamente un utilizzo di webservice in .net si fa con questi passi:
- Tasto Destro sul progetto->Aggiungi Riferimento Web
- dentro alla finestra che si apre si va ad inserire l'url del webservice
- visual studio fa la richiesta WSDL per avere tramite discovery, i vari metodi che da il webservice.
Con queste definizioni, si arrangia lui a generare la classe proxy che poi tu richiami come fosse un metodo classico, che hai scritto tu.


Tradotto in metodo pratico ad esempio un webservice che hai referenziato ha questo metodo:

[WebMethod] public string HelloWorld(string testo) { return "Hello " + testo; }

Quidni ad esempio tu lo chiami con:
Dim servizio As New localhost.WebService() servizio.HelloWorld("prova")

non ho capito che riferimento web hai tu per scrivere quel "IPAddress:=IPBox.Text"


ciao.

Matteo Raumer
[MCAD .net]
http://blogs.dotnethell.it/freeteo

peppocka Profilo | Newbie

Ciao, grazie per la risposta..
Stavo cercando un modo di estrapolare i dati dall' XML...
Riesco a ricevere la risposta ma ovviamente mi crea un nuovo dataset del tipo:
<NewDataSet>
<Table>
<countrycode>it</countrycode>
<name>Italy</name>
</Table>
<Table>
<countrycode>it</countrycode>
<name>Italy</name>
</Table>
</NewDataSet>

Come faccio a manipolare il contenuto dei nodi?
grazie 1000!!
Ciao!

freeteo Profilo | Guru

ciao,
se hai qualcosa che torna in formato Xml dovresti usare le classi "XmlDocument...etc.." oppure se sai che è un dataset, puoi fare affidamento sul metodo "ReadXml" sia del DataSet che della DataTable...

Pero' sinceramente mi sembra che ci sia qualche errore di architettura se ti trovi in questi problemi, ti spiego perche':

.net permette di esporre come risultati (o anche come parametri) dei metodi Web, delle classi tue, incaricandosi di serializzarle e deserializzarle senza che ti preoccupi di metterci le mani.
Questa bellissima cosa ti permette di lavorare tipizzato, quindi di "dimenticarti" di usare DataTable, DataSet Xml da parsare etc...lavori con i tuoi oggetti e passi e ti fai tornare quelli, come singolo oggetto o come List<> di oggetti (che cmq poi sono trasformati in Array, pero' cambia poco).
Questo per dire che io lavorerei sempre in questa strada, senza problemi, ad esempio:

WEBSERVICE:
----------------------------------------------------------------
[WebMethod] public List<Contenuto> GetContenuti() { List<Contenuto> contenuti = new List<Contenuto>(); .... return contenuti; }
ENTITA:
----------------------------------------------------------------
public class Contenuto { private int id; public int Id { get { return id; } set { id = value; } } private string titolo; public string Titolo { get { return titolo; } set { titolo = value; } } ......


PARTE WIN32 CHE LEGGE DA WEBSERVICE:
----------------------------------------------------------------
ContenutiService webService = new ContenutiService(); //--- mio riferimento web List<Contenuto> contenuti = new List<Contenuto>(webService.GetContenuti()); ...

senza problemi di avere DataTable, DataSet che poi hai casini con i dati...io ti consiglio di cambiare la tua strada di programmazione in questa direzione, ne avrai benefici grandissimi...almeno cosi' è sempre stato per me, poi è tutto da valutare


ps: il codice è in c#, ma il concetto è facilmente migabile a vb.net, da solo o tramite qualche convertitore:
http://www.carlosag.net/Tools/CodeTranslator/Default.aspx


ciao.

Matteo Raumer
[MCAD .net]
http://blogs.dotnethell.it/freeteo
Partecipa anche tu! Registrati!
Hai bisogno di aiuto ?
Perchè non ti registri subito?

Dopo esserti registrato potrai chiedere
aiuto sul nostro Forum oppure aiutare gli altri

Consulta le Stanze disponibili.

Registrati ora !
Copyright © dotNetHell.it 2002-2025
Running on Windows Server 2008 R2 Standard, SQL Server 2012 & ASP.NET 3.5