您的位置:首页 > 理论基础 > 计算机网络

go http get 请求模板

2017-11-09 00:00 891 查看
摘要: 是个逐步完善的过程还在不断学习中

GO 原生htpp请求方式

API POST

import (
"fmt"
"log"
"net/http"
"net/url"
"bytes"
"io/ioutil"
"encoding/json"
)

func SendAPIPOSTRequest(){
wardenapiurl := "http:/X.X.X.X:8080"

resource := "metainfo/handle/"

port := "X"
data := url.Values{}
data.Set("action_name","get_port_info")
data.Set("port",port)

u,_ := url.ParseRequestURI(wardenapiurl)
u.Path = resource
urlStr := u.String()

client := &http.Client{}
r,err := http.NewRequest("POST",urlStr,bytes.NewBufferString(data.Encode()))
if err!=nil{
log.Printf("request %s err:%v",urlStr,err)
return
}

//add header
//r.Header.Add("Authorization", "auth_token=\"XXXXXXX\"")
//r.Header.Add("Content-Type", "application/x-www-form-urlencoded")
//r.Header.Add("Content-Length", strconv.Itoa(len(data.Encode())))

resp,err:=client.Do(r)
if err != nil{
log.Printf("request %s err:%v",urlStr,err)
return
}

//读取body
ret,err := ioutil.ReadAll(resp.Body)
if err != nil{
log.Printf("request readbody %s err:%v",urlStr,err)
}
resp.Body.Close()

//解析json
retmap := make(map[string]interface{})
json.Unmarshal(ret,&retmap)
fmt.Println(retmap)
}


API GET

func SendAPIGETRequest(){
wardenapiurl := "X.X.X.X:8080/?"

port := "11240"
data := url.Values{}
data.Set("action_name","get_port_info")
data.Set("port",port)

urlStr := fmt.Sprintf("%s%s",wardenapiurl,data.Encode())

resp,err:=http.Get(urlStr)
if err != nil{
log.Printf("request %s err:%v",urlStr,err)
return
}

//读取body
ret,err := ioutil.ReadAll(resp.Body)
if err != nil{
log.Printf("request readbody %s err:%v",urlStr,err)
}
resp.Body.Close()

fmt.Println(string(ret))
//解析json
retmap := make(map[string]interface{})
json.Unmarshal(ret,&retmap)
fmt.Println(retmap)
}


GO net/httplib请求方式

https://godoc.org/github.com/toolkits/net/httplib

API GET

func HTTPGet(){
wardenapiurl := "X.X.X.X:8080/metainfo/handle/?"

//传入参数
port := "11240"
data := url.Values{}
data.Set("action_name","get_port_info")
data.Set("port",port)

urlStr := fmt.Sprintf("%s%s",wardenapiurl,data.Encode())

//设置超时
//connectTimeout readWriteTimeout
req := httplib.Get(urlStr).SetTimeout(5*time.Second, 30*time.Second)

//传入token
token, _ := json.Marshal(map[string]string{
"name": "X",
"sig":  "X",
})
req.Header("Apitoken", string(token))

//解析json
retmap := make(map[string]interface{})
err :=req.ToJson(&retmap)
if err!=nil{
log.Println("parse fail")
}
fmt.Println(retmap)

}

有需要的同学可以拿走

觉得有地方需要调整(新增、删除)可以留言
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  Go HttpClient HTTP JSON