Rumah >pembangunan bahagian belakang >Golang >Bagaimana untuk Mendapatkan URL Akhir Selepas Ubah Hala Menggunakan http.NewRequest Go?

Bagaimana untuk Mendapatkan URL Akhir Selepas Ubah Hala Menggunakan http.NewRequest Go?

DDD
DDDasal
2024-11-23 13:14:14604semak imbas

How to Get the Final URL After Redirects Using Go's http.NewRequest?

Cara Mendapatkan Kembali URL Akhir Selepas Ubah hala dalam http.NewRequest Go

Apabila membuat permintaan HTTP dengan http.NewRequest, anda mungkin menghadapi situasi di mana pelayan mengubah hala permintaan. Untuk mengekstrak rentetan pertanyaan daripada URL akhir, anda perlu mencari URL tempat permintaan akhirnya berakhir.

Walaupun kekurangan medan yang jelas dalam objek http.Response, terdapat cara untuk mendapatkan yang terakhir URL:

Menggunakan Fungsi Tanpa Nama untuk Semak Lencongan

Fungsi tanpa nama boleh digunakan untuk menangkap dan menyimpan URL ubah hala akhir. Berikut ialah contoh:

req, err := http.NewRequest("GET", URL, nil)
cl := http.Client{}

var lastUrlQuery string

cl.CheckRedirect = func(req *http.Request, via []*http.Request) error {
    if len(via) > 10 {
        return errors.New("too many redirects")
    }

    lastUrlQuery = req.URL.RequestURI()
    return nil
}

resp, err := cl.Do(req)
if err != nil {
    log.Fatal(err)
}

fmt.Printf("last url query is %v", lastUrlQuery)

Fungsi CheckRedirect yang diberikan kepada pelanggan membungkus mekanisme ubah hala cek lalai. Ia menyemak bilangan ubah hala dan menyimpan pertanyaan URL akhir dalam pembolehubah lastUrlQuery. Setelah pelaksanaan permintaan selesai, anda boleh mengakses URL akhir melalui lastUrlQuery.

Atas ialah kandungan terperinci Bagaimana untuk Mendapatkan URL Akhir Selepas Ubah Hala Menggunakan http.NewRequest Go?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn