Newsgroup: it.comp.lang.delphi
Titolo: Interagire con le pagine web

Salve a tutto il NG, mi piacerebbe sapere come si possa interagire con delle
pagine web situate in internet.
Mi spiego meglio:
esiste un sito in cui c'e' una pagina con dei pulsanti e delle caselle in
cui scrivere informazioni, e vorrei creare un'appllicazione che in
automatico scriva in quella casella una parola e prema quel pulsante e'
possibile?
Premetto che uso delphi 6 personal.
Grazie in anticipo a quanti risponderanno.

 possibile?
Se la pagina ricevente l'hai fatta tu, la potresti variare:
esempio in PHP:
<form><input type="text" name="test" value="<? print $TEST ?>"></form>
come puoi vedere il valore del campo text del form č assegnato dalla
variabile $TEST.....adesso basta che posti la variabile test e il gioco č
fatto.....per farlo puoi usare questi due modi:
1) tramite richiamo della pagina con il link
http://miapagina.php?TEST=valorechevuoi
2) tramite il componente NMHTTP presente in delphi 5 cliente/server (o con
il corrispondente componente di Indy), vedi esempi del manuale elettronico
di delphi
.....per la pressione del tasto non ti saprei dire.....comunque potresti
visualizzare la pagina all'interno del programma con il componente
webBrowser e i campi riempiti passando le variabili, a quel punto l'utente
deve solo premere il pulsante.
Ciao
Gianni Giusti


http://miapagina.php?TEST=valorechevuoi
Questo pero' vale solo se il metodo di spedizione dei dati
dalla pagina e' un GET, se e' un POST ?

 dalla pagina e' un GET, se e' un POST ?
L'obbiettivo era riempire i campi di un form.....sia che tu spedisca le
variabili con Get o Post (magari con un link sulla pagina della tua
applicazione), il risultato non cambia, l'importate è che la pagina
ricevente abbia i campi del form fatti come ti ho detto (nel nostro esempio
in PHP:<form><input type="text" name="test" value="<? print $TEST ?">
</form>)......comunque se non ti piace vedere il link con le variabili, puoi
usare il componente NMHTTP. Tra l'altro c'è un bellissimo esempio sulla
guida in linea di delphi.
P.S.
Il mio esempio ovviamente funziona su server che supportano PHP, ma puoi
riadattarlo anche in ASP o qualsiasi altro linguaggio lato Server.
Ciao
Gianni Giusti

L'obbiettivo era riempire i campi di un form.....
Sara', ma io credo che l'obiettivo vero sia quello di
riempire *e spedire* i dati, benche' l'OP non l'abbia detto.
In questo caso, bisognerebbe chiamare la pagina invocata dal
GET o POST della pagina ASP (o PHP) che si sta utilizzando
(quella che contiene le voci da riempire).
Non vedo a che servirebbe riempire i campi in automatico e
poi spedirli manualmente.  Nel caso di spedizione tramite
POST, non e' possibile invocare la pagina di elaborazione
dei dati con i parametri sull'URL.

 riempire *e spedire* i dati...
Esatto l'obbiettivo č proprio questo.

 poi spedirli manualmente.
Un esempio di utilizzo? passare dei dati da un database locale di una tua
qualsiasi applicazione Delphi su un form del web.....il cliende dovrebbe
solo premere il tasto conferma senza preoccuparsi di riempire i dati a mano
(e quindi senza errori). Spedire i dati manualmente significa solo fare un
click su un pulsante, non mi sembra poi una soluzione così brutta.
....io invece non vedo l'utilità di riempire un form e spedirlo in
automatico, se devo spedire dei dati ad una pagina di elaborazione, posso
spedirli direttamente alla pagina di elaborazione senza passare dal form con
una semplice GET..... tra una GET e un POST non c'è nessuna differenza dal
punto di vista del risultato. L'unico caso in cui sarebbe necessario passare
dalla pagina del form è quello in cui in quella pagina venisse aperta una
sessione indispensabile per le pagine successive...ma questo è un altro
discorso ancora.
.....comunque esiste anche il piano B (nel caso tu voglia simulare la
pressione del tasto conferma sul form della pagina html):
Per la pressione automatica del tasto "conferma" di un form compilato,
l'unica soluzione possibile a mio avviso è in Java-Script usando gli eventi,
ma questo presuppone che tu possa variare la pagina dove è presente il form
e comunque non è il NG adatto per parlare di Java-Script (potresti fare il
form ricevente in html e usando javascript, quando l'ultimo campo del form è
stato riempito, dovresti spedire tutti i dati del tuo form alla pagina di
elaborazione)
Ciao
Gianni Giusti

punto di vista del risultato. 
Stabilito che non e' solo il riempimento di dati che serve,
ma anche la spedizione dei dati, cio' che interessa non e'
il risultato, ma il modo di invocazione della pagina che
elabora i dati.  Nel caso di un GET si possono usare i
parametri sulla linea di comando, nel caso di un POST
bisogna usare gli header HTTP.

 dei dati con i parametri sull'URL.
.....mi stai dicendo che se spedisco le variabili con in POST o una GET la
cosa cambia?......se è questo che volevi dire ti posso assicurare che ti
sbagli di grosso....se non ti funziona devi riguardarti la configurazione
del tuo server.
Ciao
Gianni Giusti

del tuo server.
"Se la stringa di interrogazione non e' formattata in modo
appropriato, non esiste alcuna garanzia che lo script di
elaborazione del modulo leggera' i valori dei campi del
modulo in modo corretto.  Si tratta di un altro motivo per
cui e' preferibile l'utilizzo del METHOD=POST piuttosto che
METHOD=GET.  La proprieta' METHOD non deve essere impostata
a GET in ogni caso, ma puo' anche essere impostata a POST.
Quando la proprieta' METHOD e' impostata a POST, i valori
dei campi del modulo non vengono passati attraverso la
stringa d'interrogazione, ma vengono passati nelle
instestazioni HTTP [...] E' importante sapere il modo in cui
le informazioni vengono passate nello script di elaborazione
del modulo.  Il codice potrebbe essere diverso se il modulo
avesse la proprieta' METHOD impostata a GET invece di POST".
[Mitchell-Atkinson, "Active Server Pages", pag. 240].

 [Mitchell-Atkinson, "Active Server Pages", pag. 240].
Senza fare tanto il polemico, perchè non le provi le cose prima di citare
Tizio Caio e Sempronio.....
Concordo che l'uso del Get in certe situazioni è sconsigliato (a causa delle
sue limitazioni e per altri motivi che non starò a dire, ma che se vuoi ti
posto in privato), in semplici form e usando funzioni adeguate per la
formattazione dei valori delle variabili, anche il metodo Get può andar bene
(siamo d'accordo che dipende dal form della pagina postante ecc...), ma per
TNT potrebbe andar bene....come fai tu a dire che sicuramente non funziona
per il suo caso?......ma anche se non funzionasse, ho proposto l'uso del
componente HTTP che posta come meglio desideri e QUESTA MI SEMBRA UNA
SOLUZIONE!!!
In mezzo a tante parole mi sembra che tu abbia detto tutto e nulla e
proposto ZERO SOLUZIONI!
Ciao
Gianni Giusti

per il suo caso?......
Perche' nel 90% dei casi, le pagine spediscono con POST e
non con GET.

 non con GET.
Prova a fare un form di inserimento di dati anagrafici di una persona, poi
visualizzali, inseriscili in un database o quel cavolo che ti pare su una
pagina di elaborazione......adesso prova a passare i dati con una GET e
noterai che ottieni lo stesso risultato (sempre che i dati li formatti in
modo corretto). Ovviamente nessuno si sognerebbe di passare dati molto
riservati(carte di credito, password ecc..), file o dati oltre i 300
caratteri attraverso una Get (sia per rischio lettura sia per impossibilità
oggettiva)......ma mi sembra proprio che TNT non ha specificato ne tipi di
dati ne lunghezze, quindi mi sembra chiaro che la scelta sull'uso di GET o
POST, in questo caso, debba farla lui secondo le proprie esigenze......tu
parti a priori dicendo che GET non funzionerà sicuramente, mentre nel suo
caso potrebbe essere la soluzione più semplice (oltre che fargli risparmiare
"volume" nella sua applicazione)......te lo ripeto ancora (a scanso di
equivoci), altrimenti può usare il componente HTTP.
Con questo chiudo e ti saluto, altrimenti tra un po' si va alle mani :-DD
(...e non mi sembra proprio il caso, visto che non siamo a parlare di donne
o soldi).... anzi, ti propongo una stretta di mano virtuale ;-)   (ogniuno
fermo nelle sue idee e convinzioni....tanto TNT ormai la soluzione al suo
problema la dovrebbe avere)
Ciao
Gianni Giusti

ogniuno fermo nelle sue idee
Ti saluto anch'io, ma si dice "ognuno".
-- 
Posted from  [80.105.34.80] 
via Mailgate.ORG Server - 
http://www.Mailgate.ORG

 sull'url (riririririleggere, please).
.....a Finnnnnnnn  ;-)......
A me, e probabilmente anche alla pagina di elaborazione (con poche
eccezzioni) non ce ne frega una mazza in che modo le variabili arriveranno
(se tramite URL o POST)......si tratta di provare una soluzione (quella del
link appunto) che, spesso e volentieri funziona, è più facile da realizzare
e quindi si presta ad una verifica immediata......se non funzionerà ci sarà
sempre la soluzione "B" il componente e spedizione con POST......
......se (come ti piace dire a te) "alla base del meccanismo c'e' il metodo
POST"  NON è detto che NON funzioni anche con GET (passando i valori
sull'url), anzi, funziona quasi sempre se il form non presenta cose
particolari (con poche eccezzioni dovute a limiti della GET, dati
particolari da spedire o linguaggi lato server che ti costringono a reperire
i valori nell'array $HTTP_POST_FILES).....tutto questo te lo posso
dimostrare in 1000 modi differenti.
Prendi ad esempio questi link:
http://search2.tiscali.it/searchbin/webSearch.pl?search=test&query=Francia
oppure:
http://www.poste.it/ricerche/news_risultato.php3?chiave=Firenze&cercacosa=uf
ficio&provenienza=cercasito
.....guarda caso che 2 form (presi a caso) con metodo post (li trovi nelle
loro rispettive pagine principali), passando le variabili con Get sull' url
funziona, come vedi io non ho detto cavolate....se almeno avessi
provato......ti potrei fare altri 1000 esempi (anche personali)....adesso
non venirmi a dire "ma io volevo dire che se leggo dall'array
$HTTP_POST_FILES ecc...ecc..." perchè quello non rappresenta certo il 90%
dei casi, ma anzi è una rarità....
Adesso taglio con questo post perchè sforiamo nell' OT.....comunque, se ti
sevono altre dimostrazioni di ciò che ti ho detto (anche con Delphi), puoi
sempre contattarmi in privato 
gianni...@tiscalinet.it
Ciao e nun te incazza ;-)
Senza nessun rancore
Gianni Giusti

Grazie a tutti!

non con GET.
Spediscono con POST solo quando si tratta di spedire parecchio testo 
(campi <textarea>), o file (<input type="file">). Altrimenti conviene, 
piuttosto, usare GET, per le stesse ragioni per cui i frame son tanto 
fichi ma andrebbero evitati (ad esempio nel caso di motori di ricerca 
l'utente si può salvare le ricerche preferite semplicemente aggiungendo 
l'URL ai bookmark)
-- 
Nato nel vizio, morto nel supplizio
Nato nel peccato, ad entrare sia invitato