求教golang中http发送post请求gb2312编码的解决方案

Python012

求教golang中http发送post请求gb2312编码的解决方案,第1张

用Post,不要用PostForm,至於编码可以自己用2楼的方法然后urlencode,附上代码片段

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提交