Spróbuj tego:
(require net/url)
(define input (get-pure-port (string->url "http://www.someurl.com")))
(define response (port->string input))
(close-input-port input)
Teraz zmienna response
będzie zawierać odpowiedzi HTTP z serwera. Nawet lepiej, opakowanie wyżej w procedurze, również zauważyć, że dodałem maksymalną liczbę przekierowań dozwolony:
(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:
Following @ doskonałą poradę GregHendershott (patrz jego odpowiedź szczegóły) oto kolejny, bardziej wydajny sposób wdrożyć żądaną funkcjonalność:
(define (urlopen url)
(call/input-url
(string->url url)
(curry get-pure-port #:redirections 5)
port->string))
Czy istnieje sposób na wyodrębnienie kodu statusu innego niż przetwarzanie nagłówków "ręcznie"? Jestem zaskoczony, że nie mogłem znaleźć żadnej funkcji pomocniczej, która by to zrobiła, albo w przekręcie właściwym, albo w bibliotece http. – offby1
Niestety, nie zauważyłem nawet Twojego komentarza do tej pory! Moja http lib zawiera następujące funkcje: https://github.com/greghendershott/http/blob/master/http/head.rkt#L22-L45 –