求教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编码的解决方案的主要内容,如果未能解决你的问题,请参考以下文章

Golang net/http客户端的使用

java web项目 在linux服务器发送http post请求 中文乱码

golang基础-http请求的几种方式

golang基础-http请求的几种方式

在 javascript 中的 HTTP POST 请求中发送 cookie

如何使用 _csrf 在 angularjs 中发送 POST 请求?