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

Python011

求教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),)),)

上一章节介绍了使用echo启动一个http服务器并提供一个简单的GET接口,这一章对请求与响应做一下详细的讲解。

了解请求与响应之前首先要知道ehco框架提供了一个Context接口,Context 表示当前 HTTP 请求的上下文,我们需要知道的是Context的实现结构体context,context中包含了请求(request)、响应(response)以及参数等结构体,context是一个内部结构体,但是对外提供了访问的方法,我们可以在开发中使用context提供的方法做很多事情,比如获取请求路径、客户端ip、请求参数等等。

request是包含了当前请求信息的结构体,我们从中可以获取到前后端约定好的参数来作出相应的业务逻辑,这下面开始模拟请求

首先模拟一个添加用户的POST请求,这里使用了c.bind()这个方法,这个方法起到的作用是把表单参数或者JSON参数绑定至对应的结构体(这里必须是指针类型),字段需要一一对应,也就是说前端需要传递的表单或JSON参数名为name、age、gender才能绑定到结构体中。

接下来模拟一个GET请求用来获取用户信息

response是包含了返回信息的结构体,echo提供了多种类型的返回结果

上面编写了处理请求的handler,这里介绍一下如何把handler注册到路由中,这里对应的就是上面handler。