|
|||||||
|
|
|
![]() |
|
|
Strumenti |
|
|
#1 |
|
Senior Member
Iscritto dal: Feb 2009
Messaggi: 700
|
[Java] Come fare una richiesta ad un web service dal broswer ?!?! help me :-(
Ciao,
non sò se l'argomento riguardi proprio Java ma...un amico mi ha passato un web service per un progetto comune che ha scritto usando il framework Spring di Java e vorrei avere qualche informazione su come interrogare tale WS dal broswer. Tanto per fare un po' di chiarezza, questo web service funziona più o meno così: effettua delle query su di una tabella che contiene una lista di POI (Points Of Interest: ogni poi ha una sua longitudine e latitudine). Fornisce all'esterno due metodi, allPois() che ritorna tutti i record contenuti nella tabella all'utente senza nessuna discriminazione; ed un altro metodo chiamato getRangePoi che prende 3 parametri in input (una latitudine, una longitudine ed un range) e che effettuando una query complessa deve restituire all'utente tutti i poi presenti in un certo range dalla posizione specificata. Vi spiego meglio, se nel broswer digito: http://localhost:8080/InsertPoi/serv...ServiceWS?wsdl mi compare il WSDL che tra le tante cose mi dice quali metodi sono invocabili sul mio web service ed infatti mi compaiono queste righe nell'XML ricevuto che dovrebbero far rferimento ai 2 metodi che posso invocare sul mio web service: 1) Parte del WSDL relativo al metodo allPois: Codice:
<element name="allPois"> <complexType/> </element> <element name="allPoisResponse"> <complexType> <sequence> <element name="allPoisReturn" type="impl:ArrayOf_xsd_anyType"/> </sequence> </complexType> </element> Codice:
<element name="getRangePoi"> <complexType> <sequence> <element name="lon" type="xsd:string"/> <element name="lat" type="xsd:string"/> <element name="range" type="xsd:string"/> </sequence> </complexType> </element> − <element name="getRangePoiResponse"> <complexType> <sequence> <element name="getRangePoiReturn" type="impl:ArrayOf_xsd_anyType"/> </sequence> </complexType> </element> http://localhost:8080/InsertPoi/serv...method=allPois Ora il problema è che non ho la minima idea di come provare a vedere il risultato del metodo getRangePoi perchè questo metodo ha bisogno di 3 parametri: una latitudine, una longitudine ed un range. La signature di tale metodo è la seguente: Codice:
public List<HashMap>getRangePoi(String lon,String lat,String range) Sapete dirmi cosa devo mettere nella barra degli indirizzi del broswer per invocare tale metodo con i 3 parametri e vedere un output nel broswert? Grazie mille |
|
|
|
|
|
#2 |
|
Senior Member
Iscritto dal: Oct 2005
Messaggi: 3306
|
Hai per forza necessità di usare il browser?
Altrimenti potresti usare SoapUI In ogni caso dipende dalla configurazione del webservice, i dati possono essere passati anche in Post o Get esattamente come i parametri di una pagina web tramite Codice:
?nome1=valore1&nome2=valore2 Ma ovviamente dipende se il webservice è configurato per accettare tale convenzione di chiamata |
|
|
|
|
|
#3 | |
|
Senior Member
Iscritto dal: Feb 2009
Messaggi: 700
|
Quote:
Allora ho provato a fare come dici tu (sempre che io abbia capito bene cosa intendi) mettendo nella barra degli indirizzi del broswer la seguente richiesa: http://localhost:8080/InsertPoi/serv...e2=12&nome3=10 Ma nel broswer appare il seguente messaggio di errore (il WS è sicuro che funziona perchè il mio collega lo ha testato, non dal broswer...credo con un ambiente di sviluppo tipo Eclipse chiamato Idea che offre un'apposito tool) Codice:
<soapenv:Envelope> <soapenv:Body> <soapenv:Fault> <faultcode>soapenv:Server.userException</faultcode> <faultstring> org.xml.sax.SAXParseException: Element type "getRangePoi" must be followed by either attribute specifications, ">" or "/>". </faultstring> <detail> <ns1:hostname>andrea-laptop</ns1:hostname> </detail> </soapenv:Fault> </soapenv:Body> </soapenv:Envelope> Non è che riesci a darmi la richiesta completa che dovrei passare nella barra degli indirizzi per richiamarlo correttamente? Cosa intendi che posso passarlo con get o post? mi potresti fare un esempio anche di quello eventualmente? Grazie mille e perdona l'ignoranza ma è la prima volta che metto le mani su queste cose e non ci hanno spiegato un cavolo !!! |
|
|
|
|
|
|
#4 |
|
Senior Member
Iscritto dal: Aug 2005
Messaggi: 2755
|
Ti consiglio anche io di usare soapUI, una comoda interfaccia grafica con cui puoi interagire con i web-services.
http://www.soapui.org/ Basta che importi il WSDL e ti ritrovi con gran parte del lavoro fatta in automatico. Inoltre ha dei comodi tool che generano automaticamente il codice per interfacciare la tua applicazione con il web-service
__________________
|
|
|
|
|
|
#5 | ||
|
Senior Member
Iscritto dal: Oct 2005
Messaggi: 3306
|
google potrebbe rispondere alla domanda meglio di me.
Comunque è un tool appositamente studiato per richiamare i webservice. Quote:
Quote:
Ma ti hanno mai parlato dell'HTTP? In ogni caso ripeto non è detto che tu possa richiamarlo da browser, perchè formalmente è necessaria una richiesta soap. Poi se il webservice è configurato in maniera apposita può accettare anche richieste in post o get. |
||
|
|
|
|
|
#6 | |
|
Senior Member
Iscritto dal: Feb 2009
Messaggi: 700
|
Quote:
Il WS è SOAP, infatti come ti avevo detto se passo la richiesta all'altro metodo che non accetta prametri funziona e mi restituisce nel broswer l'XML contenente la lista di tutti i POI. Ho provato a fare come mi hai detto te (almeno questa volta credo di aver capito bene) usando nell'indirizzo i nomi dei parametri che usa effettivamente il mio metodo ma continua a darmi errore. Ti faccio vedere per chiarezza: Io nella barra degli indirizzi del broswer ho messo questo indirizzo: Codice:
http://localhost:8080/InsertPoi/services/PoiServiceWS?method=getRangePoi?lon=12&lat=48&range=100 Codice:
public List<HashMap>getRangePoi(String lon,String lat,String range)
{
System.out.println("Attenzione "+lon+" lat "+lat+" range "+range);
return poiDao.getRangePoi(Float.parseFloat(lon), Float.parseFloat(lat), Integer.parseInt(range));
}
Se metto quell'indirizzo mi dà il seguente errore nel broswer: Codice:
<soapenv:Envelope> <soapenv:Body> <soapenv:Fault> <faultcode>soapenv:Server.userException</faultcode> <faultstring> org.xml.sax.SAXParseException: Element type "getRangePoi" must be followed by either attribute specifications, ">" or "/>". </faultstring> <detail> <ns1:hostname>andrea-laptop</ns1:hostname> </detail> </soapenv:Fault> </soapenv:Body> </soapenv:Envelope> ripeto...il WS è SOAP infatti se dal brosewer accedo all'altro metodo facendo: http://localhost:8080/InsertPoi/serv...method=allPois mi tira fuori il corretto XML... Grazie mille |
|
|
|
|
|
|
#7 |
|
Senior Member
Iscritto dal: Feb 2009
Messaggi: 700
|
sbagliavo perchè non avevo messo il & davanti al primo parametro ma avevo capito che davanti al primo ci volesse il ? e che i successivi & non erano risoluzioni di variabili ma degli AND logici...oddio ora mi sento idiota !!
|
|
|
|
|
| Strumenti | |
|
|
Tutti gli orari sono GMT +1. Ora sono le: 20:18.



















