PDA

View Full Version : [C] Client che interroga server web


vici_1
22-02-2004, 21:51
Ho scritto un pgm client in c per provare a fare la richiesta di pagine web ad un server. Ovviamente la risposta sara' una o piu' stringhe con i tag html.
Il programma si connette al server, che e' un Apache in locale, ma non ottengo risposta.
Ho visto che sia IE che Opera, quando fanno una rischiesta al server inviano un messaggio di questo tipo :

prova.html HTTP/1.1
User-Agent: Opera/6.05 (Windows XP; U) [en]
Host: 127.0.0.1
Accept: text/html, image/png, image/jpeg, image/gif, image/x-xbitmap, */*
Accept-Language: it, en
Accept-Charset: windows-1252;q=1.0, utf-8;q=1.0, utf-16;q=1.0, iso-8859-1;q=0.6,
*;q=0.1
Accept-Encoding: deflate, gzip, x-gzip, identity, *;q=0
Cache-Control: no-cache
Connection: Keep-Alive, TE
TE: deflate, gzip, chunked, identity, trailers

¦"'

Io mi lmitavo an inviare la prima riga con la pagina richiesta :
prova.html HTTP/1.1

E' per questo che non mi risponde?
Altro dubbio : sono sulla starda giusta, ovvero, quello che sto cercando di fare si puo' fare ?

cionci
23-02-2004, 00:39
Il comando minimo è :

GET prova.html HTTP/1.1\r\n
Host: 127.0.0.1\r\n\r\n

vici_1
23-02-2004, 12:42
Quindi deduco che quel che sto facendo puo' funzionare...con le dovute modifiche.
Non credevo di dover aggiungere anche "GET" nella costruzione del messaggio da inviare. Infatti in un pgm che mi fa da server per le prove (tanto per capire come funziona la cosa, a parte Apache) facendo il display della stringa che ricevevo dal client, avevo inteso che GET lo aggiungevano le routine dei socket, perche' nel messaggio che inviavo dal client non mettevo GET, pur ritrovandomelo nel buffer letto dal server.
Questa sera a casa provo.
Grazie.
Ciao.

vici_1
23-02-2004, 22:56
Originariamente inviato da cionci
Il comando minimo è :

GET prova.html HTTP/1.1\r\n
Host: 127.0.0.1\r\n\r\n

Funziona perfettamente ora il server web mi risponde.

Un'altra domanda, ma il valore del parametro Host deve essere l'IP del client che fa la richiesta ? Lo chiedo perche' ora che funziona, vorrei provare ad inoltrare la richiesta ad un "vero" server web tramite internet.

Altro dubbio : non rischio di fare casini e ritrovarmi in qualche pasticcio legale? Il mio intento e' quello di prelevare pagine web senza un browser per poi analizzare il contenuto con programmi autonomi senza ricorrere ai controlli di VB o altro.

Ciao e grazie.

cionci
24-02-2004, 00:54
Se non ne modifichi il contenuto o non usi le informazioni contenute al di fuori delle pagine non dovresti avere problemi...

Host è la parte scritta nell'URL dopo http... Può essere o meno un indirizzo ip...

vici_1
24-02-2004, 12:43
Originariamente inviato da cionci
Se non ne modifichi il contenuto o non usi le informazioni contenute al di fuori delle pagine non dovresti avere problemi...
Il mio intento e' quello di connettermi (automaticamete) ai siti che forniscono le quotazioni di borsa per rilevare i dati, preparare statistiche, e successivamente utilizzare il mio pc come server per leggere i dati, oppure spedirmi in ufficio, sempre automaticamente una e-mail.

Host è la parte scritta nell'URL dopo http... Può essere o meno un indirizzo ip...

Ti chiedo scusa, ma non ho capito.
Nell stringa GET prova.html HTTP/1.1\r\nHost: 127.0.0.1\r\n\r\n
dove c'e' "Host" ci va lindirizzo del mio client(com'e' visto dalla rete, in questo caso internet) oppure come mi pare di capire e' l'indirizzo del sito dove invio la richiesta della pagina web? Es. GET prova.html HTTP/1.1\r\nHost:www.google.it\r\n\r\n ?

cionci
24-02-2004, 17:20
No...se te scrivi http://www.pippo.com/pippo.html in Host ci va www.pippo.com...

vici_1
24-02-2004, 23:47
Funziona.
Grazie dell'aiuto.
Ciao.