2016-01-29 13 views
5

Tôi đang gửi yêu cầu đến máy chủ nhưng nó đang trả về một trang web. Có cách nào để lấy url của trang web thay thế không?cách nhận url chuyển hướng thay vì nội dung trang trong golang?

package main 

import (
    "fmt" 
    "io/ioutil" 
    "net/http" 
) 

func main() { 
    req, err := http.NewRequest("GET", "https://www.google.com", nil) 
    if err != nil { 
     panic(err) 
    } 

    client := new(http.Client) 
    response, err := client.Do(req) 
    if err != nil { 
     panic(err) 
    } 
    fmt.Println(ioutil.ReadAll(response.Body)) 
} 
+0

các bản sao có thể có: http://stackoverflow.com/questions/24518945/ http://stackoverflow.com/questions/29865691/, http://stackoverflow.com/questions/27814942/ – JimB

Trả lời

12

Bạn cần kiểm tra chuyển hướng và dừng (chụp) chúng. Nếu bạn nắm bắt một chuyển hướng thì bạn có thể nhận được URL chuyển hướng (chuyển hướng nào đang diễn ra) bằng cách sử dụng phương pháp định vị phản hồi.

package main 

import (
    "errors" 
    "fmt" 
    "net/http" 
) 

func main() { 
    req, err := http.NewRequest("GET", "https://www.google.com", nil) 
    if err != nil { 
     panic(err) 
    } 
    client := new(http.Client) 
    client.CheckRedirect = func(req *http.Request, via []*http.Request) error { 
     return errors.New("Redirect") 
    } 

    response, err := client.Do(req) 
    if err != nil { 
     if response.StatusCode == http.StatusFound { //status code 302 
      fmt.Println(response.Location()) 
     } else { 
      panic(err) 
     } 
    } 

} 
Các vấn đề liên quan