4

I tried building a simple program using Golang, here it is:

package main

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

func main(){

        proxy := http.NewSingleHostReverseProxy( &http.URL{Scheme:"http",Host:"www.google.com",Path:"/"})

        err := http.ListenAndServe(":8080", proxy)
        if err != nil {
                log.Fatal("ListenAndServe: ", err.String())
        }
}

Build:

go build myprogram.go

Output:

command-line-arguments
./myprogram.go:5: imported and not used: "net/http/httputil"
./myprogram.go:11: undefined: http.NewSingleHostReverseProxy
./myprogram.go:11: undefined: http.URL
./myprogram.go:15: err.String undefined (type error has no field or method String)

I noticed that http.NewSingleHostReverseProxy is in the "net/http/httputil" package, so why did I see such errors? Maybe I need a specific command to build it correctly?

EDIT Afterwords, here is the new working code:

package main

import (
        "net/http"
        "net/http/httputil"
        "net/url"
        "log"
)

func main(){

        proxy := httputil.NewSingleHostReverseProxy( &url.URL{Scheme:"http",Host:"www.google.com",Path:"/"})

        err := http.ListenAndServe(":8080", proxy)
        if err != nil {
                log.Fatal("ListenAndServe: ", err)
        }
}
5
  • 1
    Shouldn't it be httputil.NewSingleHostReverseProxy then? Commented Nov 7, 2013 at 18:08
  • @raina77ow, I replaced http.NewSingleHostReverseProxy with httputil.NewSingleHostReverseProxy and the error is gone, thanks. But the error with http.URL still occur. Commented Nov 7, 2013 at 18:20
  • Because it's actually url.URL, not http.URL. Not all the http-related functions/types are gathered in net/http package. Commented Nov 7, 2013 at 18:23
  • @raina77ow, Thanks! I fixed all errors. Thanks for help. Commented Nov 7, 2013 at 18:35
  • It would be nice if any of you two would answer this question so it can be marked as resolved. Thanks! Commented Nov 7, 2013 at 22:40

1 Answer 1

3

I added

"net/url"

And replaced http.NewSingleHostReverseProxy with httputil.NewSingleHostReverseProxy, also http.URL with url.URL.

This is the working code:

package main

import (
"net/http"
"net/http/httputil"
"net/url"
"log"
)

func main(){

proxy := httputil.NewSingleHostReverseProxy( &url.URL{Scheme:"http",Host:"www.google.com",Path:"/"})

err := http.ListenAndServe(":8080", proxy)
if err != nil {
        log.Fatal("ListenAndServe: ", err)
}
}

Thanks to raina77ow for help.

Sign up to request clarification or add additional context in comments.

Comments

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.