resp, err := http.Post(reqUrl,"application/x-www-form-urlencoded",strings.NewReader(fmt.Sprintf("__VIEWSTATE=%s&__EVENTVALIDATION=%s&txtUid=000000000&txtPwd=xxxxxxxx&selKind=1&selKind=1&btLogin=%B5%C7%C2%BD",url.QueryEscape(viewstate),url.QueryEscape(eventvalidation),)),)
http.request的三个属性Form、PostForm、MultipartForm:Form:存储了post、put和get参数,在使用之前需要调用ParseForm方法。
PostForm:存储了post、put参数,在使用之前需要调用ParseForm方法。
MultipartForm:存储了包含了文件上传的表单的post参数,在使用前需要调用ParseMultipartForm方法。
获取Get参数
用postman测试,提交http://localhost:8080/?uid=111,服务端输出 :[111],提交: http://localhost:8080/?uid=111&uid=222。服务端输出:[111 222]
小结:r.Form是url.Values字典类型,r.Form[“id”]取到的是一个数组类型。因为http.request在解析参数的时候会将同名的参数都放进同一个数组里。
GO报这个错是JSON解析失败,原因是POST提交时不是JSON而是form-data;
经查日志发现FORM提交了2次,一次是FORM ACTION提交的,一次是AJAX提交的;
原因是AJAX提交时,处理过程中出错,没有运行到最后返回false阻断FORM提交