2017-04-10 52 views
-1

我編寫了一個簡單的Web服務器,它使用url.ResolveReference將一些相對路徑附加到基本URL。然後我想使用http.Get()獲取結果URL的內容,但問題是http.get()以字符串作爲參數,並且我有一個* url.URL類型的對象。如何解決此問題?無法使用baseURL(類型* url.URL)作爲參數中的字符串參數http.Get

我的代碼是波紋管式給出:

package main 

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

func factHandler(w http.ResponseWriter, r *http.Request) { 
    str1 := "http://www.meaningfultype.com/" 
    u1, _ := url.Parse(str1) 
    str2 := "/clarendon.html" 
    u2, _ := url.Parse(str2) 
    u3 := u1.ResolveReference(u2) 
    fmt.Println("url:", u3) 
    res, err := http.Get(u3) 
    if err != nil { 
     log.Fatal(err) 
    } 
    robots, err := ioutil.ReadAll(res.Body) 

    res.Body.Close() 
    if err != nil { 
     log.Fatal(err) 
    } 
    contentType := res.Header.Get("Content-Type") 
    w.Header().Set("Content-Type", contentType) 
    w.Write(robots) 
} 
+2

'URL'有一個'字符串()'方法,做那。 –

回答

0

呼叫U3的String()方法,並傳遞返回的字符串http.Get()

package main 

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

func factHandler(w http.ResponseWriter, r *http.Request) { 
    str1 := "http://www.meaningfultype.com/" 
    u1, _ := url.Parse(str1) 
    str2 := "/clarendon.html" 
    u2, _ := url.Parse(str2) 
    u3 := u1.ResolveReference(u2) 
    fmt.Println("url:", u3) 
    res, err := http.Get(u3.String())   // Change this line 
    if err != nil { 
     log.Fatal(err) 
    } 
    robots, err := ioutil.ReadAll(res.Body) 

    res.Body.Close() 
    if err != nil { 
     log.Fatal(err) 
    } 
    contentType := res.Header.Get("Content-Type") 
    w.Header().Set("Content-Type", contentType) 
    w.Write(robots) 
} 
相關問題