2016-05-04 9 views
0

nicht lesen Ich bin neu in Golang und versuchen, eine grundlegende http App mit der httprouter API zu erhalten. Ich habe eine Mauer mit gelesenen Formulardaten geschlagen, trotz der Befolgung des Rates in another StackOverflow question.Kann Postform Wert in Golang mit htprouter

Hier ist mein Code (minus Belanglosigkeiten):

import (
    "fmt" 
    "net/http" 
    "github.com/julienschmidt/httprouter" 
) 


func main() { 
    r := httprouter.New() 
    r.POST("/sub", func(w http.ResponseWriter, r *http.Request, _ httprouter.Params) { 
     r.Header.Set("content-type", "text/html") 
     err := r.ParseForm() 
     if err != nil { 
      fmt.Fprintf(w, "<h1>Error: %s</h1>\n", err) 
     } 
     fmt.Fprintf(w, "<h1>Submitted message!</h1>\n<p>-%s-</p>\n", r.PostFormValue("msg")) 
    }) 
    http.ListenAndServe("localhost:3000", r) 
} 

Im Ausgang, wo ich -hello- sehen sollte, ich -- gerade sehen. Wenn ich die HTTP-Anfrage in Firefox in der Form Daten-Panel sehe, sehe ich msg:"hello", also warum r.PostFormValue("msg") eine leere Zeichenfolge zurückgibt?

+2

Vielleicht könnten Sie die tatsächliche Anfrage zeigen? Übrigens: Dein 'r.Header.Set (" content-type "," text/html ")' ist bei der Anfrage unsinnig; es sollte wahrscheinlich auf die Antwort gehen. – Volker

Antwort

0

Danke an Volker für das Aufzeigen eines Fehlers. Als ich die Zeile r.Header.Set("content-type", "text/html") auskommentierte, wurde das Problem gelöst. Vielleicht war das das Problem oder vielleicht gab es ein Problem mit der IDE (LiteIDE), die eine alte Version des Codes zwischenspeichert. Jedenfalls kann ich jetzt den gebuchten Wert lesen.