2013-05-28 5 views
18

तो, मैं नेट/http पैकेज का उपयोग कर रहा हूं। मैं एक यूआरएल प्राप्त कर रहा हूं जिसे मैं निश्चित रूप से पुनर्निर्देशित करने के लिए जानता हूं। यह अंतिम यूआरएल पर लैंडिंग से पहले दो बार रीडायरेक्ट भी कर सकता है। दृश्यों के पीछे स्वचालित रूप से रीडायरेक्शन संभाला जाता है।गोलांग में, रीडायरेक्ट की श्रृंखला के बाद अंतिम यूआरएल कैसे निर्धारित करें?

क्या यह पता लगाने का कोई आसान तरीका है कि अंतिम URL एक हैकिश वर्कअराउंड के बिना था जिसमें http.Client ऑब्जेक्ट पर CheckRedirect फ़ील्ड को सेट करना शामिल है?

मुझे लगता है कि मुझे लगता है कि मुझे लगता है कि मैं एक कामकाज के साथ आया था, लेकिन यह हैकिश की तरह है, क्योंकि इसमें एक वैश्विक चर का उपयोग करना और कस्टम http.Client पर CheckRedirect फ़ील्ड सेट करना शामिल है।

ऐसा करने के लिए एक क्लीनर तरीका होना चाहिए। मैं कुछ इस तरह के लिए उम्मीद कर रहा हूँ:

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) 
} 
+0

मैं माफी आपके साथ काम करने के लिए मैं कोई वास्तविक URL नहीं है, कर रहा हूँ। यह मेरे काम के लिए है और जिस साइट पर मैं काम कर रहा हूं उसके लिए क्रेडेंशियल्स इत्यादि की आवश्यकता है। –

+3

संभव डुप्लिकेट [जाओ में http पैकेज का उपयोग करते समय अंतिम यूआरएल गंतव्य कैसे प्राप्त करें?] (Http://stackoverflow.com/questions/ 16532436/कैसे-से-पुनर्प्राप्ति-द-फाइनल-यूआरएल-गंतव्य-उपयोग-द-http-package-in-go) – peterSO

उत्तर

59
package main 

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

func main() { 
    resp, err := http.Get("http://stackoverflow.com/q/16784419/727643") 
    if err != nil { 
     log.Fatalf("http.Get => %v", err.Error()) 
    } 

    // Your magic function. The Request in the Response is the last URL the 
    // client tried to access. 
    finalURL := resp.Request.URL.String() 

    fmt.Printf("The URL you ended up at is: %v\n", finalURL) 
} 

आउटपुट:

The URL you ended up at is: http://stackoverflow.com/questions/16784419/in-golang-how-to-determine-the-final-url-after-a-series-of-redirects 
+0

प्रतिक्रिया के लिए धन्यवाद! यह आपके लिए काम करता है जैसा आपने दिखाया था। खेद है कि मुझे सही जवाब के रूप में चिह्नित करने में काफी समय लगा। कुछ उच्च प्राथमिकता वाले सामान काम पर आए। –

संबंधित मुद्दे

 संबंधित मुद्दे