package main import ( "io" "net/http" ) type StringHandle1 struct { message string } func (sh *StringHandle1) ServeHTTP(writer http.ResponseWriter, request *http.Request) { Printfln("\n----------\nMethod: %v Protocol: %v Host: %v URL: %v URL.Host: %v RequestURI: %v", request.Method, request.Proto, request.Host, request.URL.String(), request.URL.Host, request.RequestURI) for name, val := range request.Header { Printfln("Header: %v = %v", name, val) } Printfln("RemoteAddr: %v", request.RemoteAddr) Printfln("ContentLength: %v", request.ContentLength) Printfln("Body: %v", request.Body) Printfln("TLS: %v", request.TLS) Printfln("--------------") if request.URL.Path == "/favicon.ico" { Printfln("Request for favicon.ico detected - returning 404") Printfln("--------------\n") writer.WriteHeader(http.StatusNotFound) return } writeLen, err := io.WriteString(writer, sh.message) if err != nil { Printfln("ServeHTTP Error: %v", err) return } Printfln("ServeHTTP Wrote %d bytes", writeLen) Printfln("--------------\n") } func main1() { err := http.ListenAndServe("localhost:5000", &StringHandle1{message: "Hello World!"}) if err != nil { Printfln("ListenAndServe Error: %v", err) return } }