【全球热闻】golang NewRequest/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):创建urlresponse,err := client.Do(request):客户端发起请求,接收返回值body,err := ioutil.ReadAll(response.Body):读取body的值,类型是bytejson.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请求内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!
X 关闭
X 关闭
- 1现代和起亚上半年出口20万辆新能源汽车同比增长30.6%
- 2如何让居民5分钟使用到各种设施?沙特“线性城市”来了
- 3AMD实现连续8个季度的增长 季度营收首次突破60亿美元利润更是翻倍
- 4转转集团发布2022年二季度手机行情报告:二手市场“飘香”
- 5充电宝100Wh等于多少毫安?铁路旅客禁止、限制携带和托运物品目录
- 6好消息!京东与腾讯续签三年战略合作协议 加强技术创新与供应链服务
- 7名创优品拟通过香港IPO全球发售4100万股 全球发售所得款项有什么用处?
- 8亚马逊云科技成立量子网络中心致力解决量子计算领域的挑战
- 9京东绿色建材线上平台上线 新增用户70%来自下沉市场
- 10网红淘品牌“七格格”chuu在北京又开一家店 潮人新宠chuu能红多久