Newsgroup: it.comp.lang.delphi
Titolo: XE5 REST Client

Ho creato un DataSnap Server su un Db Firebird (localhost), ora cerco di 
creare un Rest Client per comunicare con il DSServer (avviato)
 
trovo questa guida (per XE3 ma i principi sono gli stessi)
http://docwiki.embarcadero.com/RADStudio/XE5/en/DataSnap_REST_Client_Module_Wizard
 
 
mi propone
- Port 8080
- Context: /datasnap -> inserisco IPv4 (es: 192.168.56.2)
- REST context: /rest -> inserisco IPv4 (es: 192.168.56.2)
 
username / passowrd ? ho inserito quelle di connessisone ad Db Firebird
SYSDBA/masterkey, al test Connection ottengo
"Socket Error 1061 - connection refused"
 
ho aperto la porta 8080 sul router (ma non c'entra ha Ip diverso)
sicuramente sbaglio qualche parametro o approccio.
 
 
 
 


firewall?

 > firewall?
non sono, ho disabilitato sia AVG Antivirus che firewall Win7.
 

...prima di tutto, hai verificato che la connessione al db funzioni a prescindere da REST?
 
A.

>
certo che funziona, se creo un FireMonkey Mobile Application con target 
Android (traimte i componenti SqlConnection "driver DataSnap" 
DataSetProviderConnection, ClientDataSet)
il client comunica con il DataSnapServer (Port 211)
 
RestClient invece usa Port 8080 (e' gia potrebbe essere un problema)
 
A titolo di prova, se creo un DataSnapClientModule
- LocalServer
- DataSnap stand alone server
(usando Port = 211 e TCP/IP) l'autenticazione va buon fine.
 
Gli unici esempi trovati sono relativi a RestClient Mobile, puo' essere 
che se voglio creare un'applicazione desktop che comunica con il 
DataSnapServer sia da utilizzare DataSnapClientModule e non RestClient ?

 "Socket Error 1061 - connection refused"
 
Hai provato a richiamare il tuo server da un semplice browser, scrivendo l'indirizzo nell'apposita barra, giusto per verificare che sia attivo e che funzioni correttamente?
 
Ciao,
  Marco.
 
-- 
MARCO BREVEGLIERI
#Home: 
http://www.marco.breveglieri.name
 
#Blog: 
http://www.compilaquindiva.net
 

>
via browser non ottengo la connessione
127.0.0.1/3050
:<path>\DataBase\GESTIONEAREE.FDB
la ricerca non ha prodotto alcun risultato
 
uso IBExpert Remote Database via TCP/IP e viene aperto
Server : Remote
ServerName : 
127.0.0.1/3050
 
Protocol TCP/IP
DataBase File : <path>\DataBase\GESTIONEAREE.FDB
Client Library File : c:\Program Files (x86) 
....Firebird2.5\bin\fbclient.dll
 
tento stessa operazione su Macchina Virtuale dove gira il server
che aggancia una tabella di c:\Test\GESTIONEAREE.FDB
ma non connette
 
porta 3050 aperta
 
Server : Remote
ServerName : 
10.0.2.15/3050
  //ipv4 pc virtuale
Protocol TCP/IP
DataBase File : c:\Test\GESTIONEAREE.FDB //path sul server virtuale
Client Library File : c:\Program Files (x86) 
....Firebird2.5\bin\fbclient.dll //path su macchina reale
 

 la ricerca non ha prodotto alcun risultato
 
Mi riferivo al *server DataSnap*!
Non a FireBird... :)
 
Trattandosi di un server REST, dovresti poterlo richiamare tranquillamente inserendo l'indirizzo del metodo nell'URL.


 
Ciao Marco,
scusa se continuo a chiederti consigli ma sei il più esperto del gruppo in materia.
Ho fatto un web service in php e lo interrogo tramite una app ios con rest client, ricevendo nel rest response una struttura json. Funziona tutto ma i tempi di attesa della risposta sono lunghissimi, dell'ordine di una decina di sec. Mentre se la chiamata al web service la faccio tramite browser la risposta è immediata. Hai idea di quale possa essere la causa? Ci sono parametri da settare nel rest client o response??
Grazie
 
Fabio
 

 Ho fatto un web service in php e lo interrogo tramite una app ios con rest client, ricevendo nel rest response una struttura json. Funziona tutto ma i tempi di attesa della risposta sono lunghissimi, dell'ordine di una decina di sec. Mentre se la chiamata al web service la faccio tramite browser la risposta è immediata. Hai idea di quale possa essere la causa? Ci sono parametri da settare nel rest client o response??
 
La richiesta al Web Service tramite browser la fai sempre dal dispositivo?
Da quale macchina viene fatta?
 
-- 
MARCO BREVEGLIERI (Software and Web Developer)
#Home: 
http://bit.ly/marcobreveglieri
 
#Blog: 
http://bit.ly/compilaquindiva
 

 Da quale macchina viene fatta?
 
Si la faccio da un Iphone 4. Con safari è immediato con l'applicazione no.
Grazie.
F.
 

 Si la faccio da un Iphone 4. Con safari è immediato con l'applicazione no.
 
Ma come fai l'interrogazione di un WS, che richiede una struttura SOAP, da un browser tradizionale soprattutto su un dispositivo mobile?


 Ma come fai l'interrogazione di un WS, che richiede una struttura SOAP, da un browser tradizionale soprattutto su un dispositivo mobile?
 
Il WS è un file PHP che interroga un db MySQL e ritorna il risultato in JSON, quindi dal browser chiamo l'indirizzo 
http://www.xxx.it/index.php
 e vedo la risposta.
Anche dal browser safari dell'Iphone. Se uso l'app installata sul device ho impostato l'url del RESTClient con lo stesso di cui sopra e il risultato lo vedo in una LISTView e ti assicuro che tutto funziona, solo che usando il device è molto più lento del browser specialmente se sono connesso alla rete con il 3G, con il WIFI è meglio ma sempre più lento del browser.
Grazie 1000.
F.

 Anche dal browser safari dell'Iphone. Se uso l'app installata sul device ho impostato l'url del RESTClient con lo stesso di cui sopra e il risultato lo vedo in una LISTView e ti assicuro che tutto funziona, solo che usando il device è molto più lento del browser specialmente se sono connesso alla rete con il 3G, con il WIFI è meglio ma sempre più lento del browser.
 
Si presuppone che per l'inserimento nella lista tu faccia una elaborazione dei dati JSON che provengono dalla pagina: misura quanto tempo viene impiegato da questa procedura per ottenere gli oggetti visualizzabili nella ListView.
 
Inoltre, tieni presente che il browser potrebbe mostrarti i dati JSON come testo, quindi farteli vedere man mano che arrivano, mentre un "parser" che deve interpretare quella risposta ha bisogno dell'intero flusso completato per poterci materialmente fare qualcosa.
 
Infine, è ipotizzabile (in presenza di un discreto numero di elementi) che anche la rappresentazione impieghi qualche istante per mostrare i dati sullo schermo (sperando che tu non li stia mostrando subito, all'avvio dell'applicazione, in modo da poter distinguere il tempo di effettivo caricamento da quello impiegato dal programma per avviarsi).
 
In assenza di ulteriori elementi più specifici, non so se c'è altro che si possa dire.
 
Ciao,
  Marco.


> Infine, è ipotizzabile (in presenza di un discreto numero di elementi) che anche la rappresentazione impieghi qualche istante per mostrare i dati sullo schermo (sperando che tu non li stia mostrando subito, all'avvio dell'applicazione, in modo da poter distinguere il tempo di effettivo caricamento da quello impiegato dal programma per avviarsi).
 
Allora, la chiamata al file php avviene tramite un pulsante, quindi non è contemporaneo all'avvio dell'applicazione, le righe di risposta sono poche circa una decina e il caricamento del listview avviene dopo l'evento "RESTRequestAfterExecute".
Ho fatto una prova simile con un programmino nativo XCODE che chiama lo stesso file PHP e la risposta è immediata, penso proprio che sia un problema dei componenti REST.
Grazie
Fabio

 Ho fatto una prova simile con un programmino nativo XCODE che chiama lo stesso file PHP e la risposta è immediata, penso proprio che sia un problema dei componenti REST.
 
Non avendo visto una riga di codice sorgente per nessuno dei progetti che hai realizzato, non sapendo come è fatto questo servizio in PHP, non sapendo nulla di nulla, è ben difficile individuare il problema specifico.
 
Ad ogni modo, io ho usato i componenti REST per colloquiare con l'API di un database NoSQL (CouchDB) e funzionavano alla perfezione e in tempo reale, quindi per me il problema si trova altrove. :)


> Ad ogni modo, io ho usato i componenti REST per colloquiare con l'API di un database NoSQL (CouchDB) e funzionavano alla perfezione e in tempo reale, quindi per me il problema si trova altrove. :)
 
Ok ti ringrazio, farò un po' di prove per vedere dov'è l'intoppo.
Saluti
Fabio