golang serveur http,ne pouvez pas obtenir la valeur post
func login(rw http.ResponseWriter, req *http.Request) {
req.ParseForm()
if req.Method == "GET" {
fmt.Fprintf(rw, "Error Method")
} else {
name := strings.TrimSpace(req.FormValue("userid"))
fmt.Println("userid:", name)
fmt.Println("pwd:", req.FormValue("pwd"))
fmt.Fprintf(rw, "welcome back,%s", req.FormValue("userid"))
}
}
et je l'aide ASIhttprequst envoyer un,comme ceci.
[self setRequest:[ASIFormDataRequest requestWithURL:[NSURL URLWithString:@"http://127.0.0.1:8080/login"]]];
[request setPostValue:@"userid" forKey:@"[email protected]"];
[request setPostValue:@"pwd" forKey:@"fdsfdsfdkskfjhds"];
[request setRequestMethod:@"POST"];
j'ai eu une valeur null avec req.FormValue("userid")
ce qui s'est vraiment passé? et comment le résoudre?
- juste un coup de feu dans la nuit - peut-être vous avez juste mélangé PostValue et PostKey?
- vidage de la requête HTTP
Vous devez vous connecter pour publier un commentaire.
Comment à ce sujet?
req.ParseForm()
.avez-vous déjà tester avec
req.PostFormValue
au lieu dereq.FormValue
?req.ParseMultipartForm()
au lieu dereq.ParseForm()
?J'ai trouvé la solution avec l'appel de
ParseMultipartForm
avantParseForm
, ça fonctionne pour moi.Si vous faites multipart/form-data requête POST, ParseForm de ne pas analyser corps de la requête correctement (ce peut-être un bug). Ainsi, l'utilisation de ParseMultipartForm si c'est le cas.
Ou vous pouvez appeler FormValue ou PostFormValue directement sans faire appel à analyser ces méthodes.
J'ai eu des problèmes similaires à l'aide de ParseForm. J'ai fini par faire quelque chose comme ceci:
Espère que ça aide!
Pour extraire une valeur à partir d'une requête post, vous devez appeler
r.ParseForm()
au premier abord. Cette traite le raw de requête de l'URL et mises à jour.r.Forme.Maintenant votre
r.From
est une carte de toutes les valeurs de votre client fourni. Pour extraire une valeur particulière, vous pouvez utiliserr.FormValue("<your param name>")
our.Form.Get("<your param name>")
.Donc, fondamentalement, vous aurez ceci:
Essayer ce contact.
espère que cela va fonctionner comme il fonctionne pour moi