求教golang中http发送post请求gb2312编码的解决方案
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了求教golang中http发送post请求gb2312编码的解决方案相关的知识,希望对你有一定的参考价值。
参考技术A 用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), )),) 参考技术B 如果你使用的是httpclient,可是使用下面的方法发送gb2312数据, HttpPost httpRequest = new HttpPost(url); httpRequest.setEntity(new UrlEncodedFormEntity(pairs, "gb2312"));
golang:模拟http post请求
1,发送http post请求(客户端)
func httppost() { data :=`{"type":"10","msg":"hello."}` request, _ := http.NewRequest("POST", "http://0.0.0.0:8090/msg", strings.NewReader(data)) //post数据并接收http响应 resp,err :=http.DefaultClient.Do(request) if err!=nil{ fmt.Printf("post data error:%v\\n",err) }else { fmt.Println("post a data successful.") respBody,_ :=ioutil.ReadAll(resp.Body) fmt.Printf("response data:%v\\n",string(respBody)) } }
2,接收方法(服务端)
package main import ( "net/http" "io/ioutil" "fmt" ) func main() { //设置路由和接收HTTP请求的方法 mux :=http.NewServeMux() mux.HandleFunc("/msg",recvHandle) //设置http服务 server :=&http.Server{ Addr: "0.0.0.0:8090", Handler: mux, } //启动监听 server.ListenAndServe() } func recvHandle(w http.ResponseWriter, r *http.Request) { body,_ :=ioutil.ReadAll(r.Body) fmt.Println(string(body)) fmt.Fprintf(w,"3q your msg.") }
3,执行结果
以上是关于求教golang中http发送post请求gb2312编码的解决方案的主要内容,如果未能解决你的问题,请参考以下文章
java web项目 在linux服务器发送http post请求 中文乱码