class Net::HTTPResponse
Diese Klasse ist die Basisklasse für die Antwortklassen von Net::HTTP.
Über die Beispiele
Die hier angenommenen Codebeispiele erfordern, dass net/http geladen wurde (was auch uri lädt)
require 'net/http'
Viele Codebeispiele hier verwenden diese Beispiel-Websites
Einige Beispiele gehen auch von diesen Variablen aus
uri = URI('https://jsonplaceholder.typicode.com/') uri.freeze # Examples may not modify. hostname = uri.hostname # => "jsonplaceholder.typicode.com" path = uri.path # => "/" port = uri.port # => 443
So dass Beispielanfragen geschrieben werden können als
Net::HTTP.get(uri) Net::HTTP.get(hostname, '/index.html') Net::HTTP.start(hostname) do |http| http.get('/todos/1') http.get('/todos/2') end
Ein Beispiel, das eine modifizierte URI benötigt, dupliziert zuerst uri und modifiziert dann die Kopie
_uri = uri.dup _uri.path = '/todos/1'
Zurückgegebene Antworten
Die Methode Net::HTTP.get_response gibt eine Instanz einer der Unterklassen von Net::HTTPResponse zurück.
Net::HTTP.get_response(uri) # => #<Net::HTTPOK 200 OK readbody=true> Net::HTTP.get_response(hostname, '/nosuch') # => #<Net::HTTPNotFound 404 Not Found readbody=true>
Ebenso wie die Methode Net::HTTP#request.
req = Net::HTTP::Get.new(uri) Net::HTTP.start(hostname) do |http| http.request(req) end # => #<Net::HTTPOK 200 OK readbody=true>
Die Klasse Net::HTTPResponse enthält das Modul Net::HTTPHeader, welches den Zugriff auf Antwort-Header-Werte ermöglicht, unter anderem über
-
die Hash-ähnliche Methode
[]. -
Spezifische Reader-Methoden, wie z.B.
content_type.
Beispiele
res = Net::HTTP.get_response(uri) # => #<Net::HTTPOK 200 OK readbody=true> res['Content-Type'] # => "text/html; charset=UTF-8" res.content_type # => "text/html"
Antwort-Unterklassen
Die Klasse Net::HTTPResponse hat eine Unterklasse für jeden HTTP-Statuscode. Sie können die Antwortklasse für einen gegebenen Code nachschlagen.
Net::HTTPResponse::CODE_TO_OBJ['200'] # => Net::HTTPOK Net::HTTPResponse::CODE_TO_OBJ['400'] # => Net::HTTPBadRequest Net::HTTPResponse::CODE_TO_OBJ['404'] # => Net::HTTPNotFound
Und Sie können den Statuscode für ein Antwortobjekt abrufen.
Net::HTTP.get_response(uri).code # => "200" Net::HTTP.get_response(hostname, '/nosuch').code # => "404"
Die Antwort-Unterklassen (Einrückung zeigt die Klassenhierarchie an)
-
Net::HTTPUnknownResponse(für unbehandelte HTTP-Erweiterungen). -
-
Net::HTTPContinue(100) -
Net::HTTPSwitchProtocol(101) -
Net::HTTPProcessing(102) -
Net::HTTPEarlyHints(103)
-
-
-
Net::HTTPOK(200) -
Net::HTTPCreated(201) -
Net::HTTPAccepted(202) -
Net::HTTPNoContent(204) -
Net::HTTPResetContent(205) -
Net::HTTPPartialContent(206) -
Net::HTTPMultiStatus(207) -
Net::HTTPAlreadyReported(208) -
Net::HTTPIMUsed(226)
-
-
-
Net::HTTPMultipleChoices(300) -
Net::HTTPFound(302) -
Net::HTTPSeeOther(303) -
Net::HTTPNotModified(304) -
Net::HTTPUseProxy(305)
-
-
-
Net::HTTPBadRequest(400) -
Net::HTTPUnauthorized(401) -
Net::HTTPPaymentRequired(402) -
Net::HTTPForbidden(403) -
Net::HTTPNotFound(404) -
Net::HTTPNotAcceptable(406) -
Net::HTTPRequestTimeOut(408) -
Net::HTTPConflict(409) -
Net::HTTPGone(410) -
Net::HTTPLengthRequired(411) -
Net::HTTPLocked(423) -
Net::HTTPUpgradeRequired(426) -
Net::HTTPTooManyRequests(429)
-
-
-
Net::HTTPNotImplemented(501) -
Net::HTTPBadGateway(502) -
Net::HTTPGatewayTimeOut(504) -
Net::HTTPLoopDetected(508) -
Net::HTTPNotExtended(510)
Es gibt auch die Ausnahme Net::HTTPBadResponse, die ausgelöst wird, wenn ein Protokollfehler vorliegt.
Öffentliche Klassenmethoden
Source
# File lib/net/http/response.rb, line 138 def body_permitted? self::HAS_BODY end
true, wenn die Antwort einen Body hat.