Ich möchte 301s vs 302s protokollieren, aber eine Möglichkeit zum Lesen der Antwort Statuscode in Client.Do, Get, DoFollowingRedirects, CheckRedirect nicht sehen. Muss ich die Umleitung selbst implementieren, um dies zu erreichen?Wie bekomme ich die HTTP-Redirect-Status-Codes in Golang
Antwort
Der Typ http.Client
ermöglicht es Ihnen, einen benutzerdefinierten Transport anzugeben, mit dem Sie das tun können, wonach Sie suchen. So etwas wie die folgenden tun sollten:
type LogRedirects struct {
Transport http.RoundTripper
}
func (l LogRedirects) RoundTrip(req *http.Request) (resp *http.Response, err error) {
t := l.Transport
if t == nil {
t = http.DefaultTransport
}
resp, err = t.RoundTrip(req)
if err != nil {
return
}
switch resp.StatusCode {
case http.StatusMovedPermanently, http.StatusFound, http.StatusSeeOther, http.StatusTemporaryRedirect:
log.Println("Request for", req.URL, "redirected with status", resp.StatusCode)
}
return
}
(Sie diese ein wenig vereinfachen könnte, wenn man nur auf die Standardtransport unterstützen Chaining).
Anschließend können Sie einen Client mit diesem Transport erstellen und alle Umleitungen protokolliert werden sollen:
client := &http.Client{Transport: LogRedirects{}}
Hier ist ein vollständiges Beispiel ist, dass Sie mit experimentieren können: http://play.golang.org/p/8uf8Cn31HC
Für mehr informative Log-Nachrichten, möchten Sie vielleicht auch ['http.StatusText()'] (https://golang.org/pkg/net/http/#StatusText), um den benutzerfreundlichen Namen des Statuscodes einzufügen. –
- 1. Wie bekomme ich Schiefe Wert von Array in Golang
- 2. Wie bekomme ich alle Struktur unter einem Paket in Golang?
- 3. Golang: Reflection - Wie bekomme ich Null Wert eines Feldtyps
- 4. Wie bekomme ich die Daten von http Anfrage in einer Standard-Weise in Golang?
- 5. Wie bekomme ich die Echtzeit-Ausgabe für einen Shell-Befehl in Golang?
- 6. Wie bekomme ich die eindeutige Kennung des aktuellen Hosts in Golang?
- 7. Wie bekomme ich die Umleitungs-URL statt des Seiteninhalts in Golang?
- 8. Wie bekomme ich die Methodenaufrufhistorie?
- 9. Wie kann ich die Konsole mit Golang in Windows löschen?
- 10. Wie bekomme ich die Kameraposition?
- 11. Wie bekomme ich die Keycodes in Python
- 12. Wie bekomme ich die Dateinamenerweiterung in MySQL?
- 13. Wie bekomme ich die Bestellzeit in Magento?
- 14. Wie bekomme ich die Werte [] in PHP?
- 15. Wie bekomme ich die Zeilenanzahl in JDBC?
- 16. Wie bekomme ich die Cursorposition in bash?
- 17. Wie bekomme ich die Dateierweiterung in PHP?
- 18. Wie bekomme ich die Zeitrafferansicht in P4Win?
- 19. Wie bekomme ich die Gerätekonsole in Xcode6?
- 20. Wie bekomme ich die Zeitzone in JavaScript?
- 21. Wie bekomme ich die Erlaubnis in NDK
- 22. Wie bekomme ich die Tischhöhe in PDFsharp?
- 23. Wie bekomme ich die Bildschirmgröße in Tkinter?
- 24. Wie bekomme ich die Sequenznamenliste in sqlserver?
- 25. Wie bekomme ich die Anwendungsinstanz in javafx?
- 26. Wie bekomme ich die Dialoggröße?
- 27. Wie bekomme ich die SocketTimeoutException
- 28. Wie bekomme ich die leftNavLibrary?
- 29. Wie bekomme ich die Briefbreite?
- 30. Wie bekomme ich die Kurzcodes?
Haben Sie Response.StatusCode versucht? – rvignacio
@ rvignacio Golang http.Client führt die Weiterleitungen automatisch, so dass alles, was mir geben würde, ist der endgültige Statuscode 200. –