golangNewRequest/gorequest实现http请求的示例代码

golangNewRequest/gorequest实现http请求的示例代码

通过go语言实现http请求

http.Post import (     "net/http"     "net/url" ) data := url.Values{"start":{"100"}, "hobby":{"xxxx"}} body := strings.NewReader(data.Encode()) resp, err := http.Post("127.0.0.1:9338", "application/x-www-form-urlencoded", body)

net/http包没有封装直接使用请求带header的get或者post方法,所以,要想请求中带header,只能使用NewRequest方法

http.NewRequest

客户端:

import (     "net/http"     "json"     "ioutil" ) type Student struct{     id string     name string } type StudentReq struct{     id string     name string } func main() {     stu := Student{         id:"2ed4tg5fe35fgty3yy6uh",         name:"amber",     }     stu,err := json.Marshal(&stu)     reader := bytes.NewReader(stu)     request,err := http.NewRequest("POST", "http://192.168.1.12:8000/create", reader)     request.Header.Set("Content-Type", "application/json")     client:=&http.Client{}     response,err := client.Do(request)     defer response.Body.Close()     body,err := ioutil.ReadAll(response.Body)     fmt.Printf(string(body))     var stuReq StudentReq      err = json.UnMarshal(body, &stuReq)     fmt.Println(json.MarshalIndent(stuReq)) }

解析:

stu,err := json.Marshal(&stu):将stu对象改为json格式

reader := bytes.NewReader(stu):所以将json改为byte格式,作为body传给http请求

request,err := http.NewRequest(“POST”, “http://192.168.1.12:8000/create”, reader):创建url

response,err := client.Do(request):客户端发起请求,接收返回值

body,err := ioutil.ReadAll(response.Body):读取body的值,类型是byte

json.MarshalIndent(stuReq):修改json为标准格式

注意(坑):

1、header里的参数是Content-Type,不要写成ContentType
2、【go http: read on closed response body 】如果发送的请求是分为2个func写的,记住defer要在ioutil.ReadAll之后执行,否则报错

gorequest

这种方式适合在url里拼接参数使用param直接传递

"github.com/parnurzeal/gorequest" func main() {     resp, body, errs := gorequest.New().Post("http://127.0.0.1/create").Param("ip", "192.168.1.4").EndBytes()         if errs != nil || resp.StatusCode >= 300 {             log.Errorf("fail to call api with errors %v, %+v", errs, body)         }     var stuReq StudentReq      err = json.UnMarshal(body, &stuReq)     fmt.Println(json.MarshalIndent(stuReq)) }

到此这篇关于golang NewRequest/gorequest实现http请求的示例代码的文章就介绍到这了,更多相关golang http请求内容请搜索易知道(ezd.cc)以前的文章或继续浏览下面的相关文章希望大家以后多多支持易知道(ezd.cc)!

推荐阅读

    MacChrome打开HTTPS证书错误解决方案

    MacChrome打开HTTPS证书错误解决方案,,评论:在Chrome浏览器下,总是建议站点的安全证书不可信。有一个很好的解决方案,你可以试试看。 GoAge

    HTTP502是什么意思

    HTTP502是什么意思,错误,运行,窗口,服务器,网站,刷新,http502表示网关错误。http502错误是由后端电脑之间不良的 IP 通讯造成的,可能包括正在尝

    如何解决 HTTP 错误 503:服务不可用?

    如何解决 HTTP 错误 503:服务不可用?,错误,修复,服务,单击,选择,程序池,HTTP 错误通常以状态代码的形式出现,它是标准响应代码,当网页或其他资源在

    http是一种什么

    http是一种什么,请求,协议,服务器,文件,响应,应用层,HTTP是一种超文本传输协议,是互联网上应用最为广泛的一种网络协议。所有的WWW文件都必须遵

    http协议默认的端口号是多少

    http协议默认的端口号是多少,协议,服务器,端口,请求,默认,客户,http协议默认的端口号是多少HTTP协议的默认的端口号为80,通常用于web服务http的

    默认的http超级文本传输协议端口是什么

    默认的http超级文本传输协议端口是什么,端口,服务,默认,输入,协议,网站,http协议的默认端口是“80端口”。80端口是为HTTP协议开放的,是网页服务

    http端口号是多少

    http端口号是多少,端口,服务,协议,默认,输入,端口号,HTTP协议的默认端口号为“80”,可以通过HTTP地址(即常说的“网址”)加“:80”来访问网站;但因

    css如何实现旋转效果(代码示例)

    css如何实现旋转效果(代码示例),属性,元素,过渡效果,画中,控制,常用,CSS是应用广泛的网页样式设计语言,旋转是其中一个常用的效果。通过CSS实现旋

    递归函数代码示例

    递归函数代码示例,递归,函数,本文目录递归函数代码示例编写一个递归函数计算从1加到100的和c语言函数递归调用c语言类函数递归调用的简单

    http与https的区别

    http与https的区别,加密,协议,超文本传输协议,全版,连接,证书,  很多人存在这样的疑惑就是http与https的区别,其实https是http的安全版,但是它