Prova questo:
(require net/url)
(define input (get-pure-port (string->url "http://www.someurl.com")))
(define response (port->string input))
(close-input-port input)
Ora la variabile response
conterrà la risposta HTTP dal server. Ancora meglio, imballare quanto sopra in un procedimento, noto anche che ho aggiunto un numero massimo di reindirizzamenti consentiti:
(define (urlopen url)
(let* ((input (get-pure-port (string->url url) #:redirections 5))
(response (port->string input)))
(close-input-port input)
response))
(urlopen "http://www.someurl.com") ; this will return the response
EDIT:
Seguendo @ eccellenti consigli di GregHendershott (vedere la sua risposta per i dettagli), ecco un altro modo più robusto per implementare la funzionalità desiderata:
(define (urlopen url)
(call/input-url
(string->url url)
(curry get-pure-port #:redirections 5)
port->string))
fonte
2013-05-22 18:12:02
Esiste un modo per estrarre il codice di stato oltre all'analisi delle intestazioni "a mano"? Sono sorpreso del fatto che non sono riuscito a trovare alcuna funzione di aiuto per farlo, sia nella racchetta propriamente detta, sia nella tua libreria http. – offby1
Mi spiace di non aver nemmeno notato il tuo commento fino ad ora! La mia http lib ha delle funzioni per farlo: https://github.com/greghendershott/http/blob/master/http/head.rkt#L22-L45 –