Versuchen Sie folgendes:
(require net/url)
(define input (get-pure-port (string->url "http://www.someurl.com")))
(define response (port->string input))
(close-input-port input)
Nun ist die response
Variable, die den HTTP-Antwort vom Server enthalten wird. Noch besser ist, in einem Verfahren, das oben packen, auch feststellen, dass ich eine maximale Anzahl von Umleitungen erlaubt hinzugefügt:
(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:
@ ausgezeichneter Beratung GregHendershott des verfolgt (siehe seine Antwort für Details), hier ist eine andere, robustere Art und Weise die gewünschte Funktionalität zu implementieren:
(define (urlopen url)
(call/input-url
(string->url url)
(curry get-pure-port #:redirections 5)
port->string))
Gibt es eine Möglichkeit, den Statuscode zu extrahieren, außer die Header manuell zu analysieren? Ich bin überrascht, dass ich keine Hilfsfunktion dafür finden konnte, entweder im richtigen Racket oder in Ihrer http-Bibliothek. – offby1
Sorry, ich habe deinen Kommentar bis jetzt noch nicht bemerkt! Meine http-Lib hat Funktionen, um dies zu tun: https://github.com/gregerhendershott/http/blob/master/http/head.rkt#L22-L45 –