Używam pakietu net/http. Dostaję URL, który znam na pewno przekierowuje. Może nawet przekierować kilka razy przed lądowaniem na końcowym adresie URL. Przekierowanie jest obsługiwane automatycznie za kulisami.W języku golang, jak ustalić końcowy URL po serii przekierowań?
Czy istnieje prosty sposób sprawdzenia, jaki jest końcowy URL bez hackowatego obejścia, które wymaga ustawienia pola CheckRedirect na obiekcie http.Client?
Przypuszczam, że powinienem wspomnieć, że myślę, że wymyśliłem obejście, ale jest to rodzaj hackish, ponieważ wymaga użycia zmiennej globalnej i ustawienie pola CheckRedirect na niestandardowym http.Client.
Musi to być czystszy sposób na zrobienie tego. Mam nadzieję, że na coś takiego:
package main
import (
"fmt"
"log"
"net/http"
)
func main() {
// Try to GET some URL that redirects. Could be 5 or 6 unseen redirections here.
resp, err := http.Get("http://some-server.com/a/url/that/redirects.html")
if err != nil {
log.Fatalf("http.Get => %v", err.Error())
}
// Find out what URL we ended up at
finalURL := magicFunctionThatTellsMeTheFinalURL(resp)
fmt.Printf("The URL you ended up at is: %v", finalURL)
}
przykro mi, że nie mają prawdziwy adres URL, aby pracować. To jest dla mojej pracy i witryny, z którą pracuję wymaga poświadczeń, itp. –
możliwy duplikat [Jak pobrać docelowy adres URL podczas korzystania z pakietu http w Go?] (Http://stackoverflow.com/questions/ 16532436/how-to-retrieve-the-final-url-destination-while-using-the-http-package-in-go) – peterSO