Go语言-基本的http请求操作
生活随笔
收集整理的這篇文章主要介紹了
Go语言-基本的http请求操作
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
Go發起GET請求
基本的GET請求
//基本的GET請求 package mainimport ("fmt""io/ioutil""net/http" )func main() {resp, err := http.Get("http://www.hao123.com")if err != nil {fmt.Println(err)return}defer resp.Body.Close()body, err := ioutil.ReadAll(resp.Body)fmt.Println(string(body))fmt.Println(resp.StatusCode)if resp.StatusCode == 200 {fmt.Println("ok")} }帶參數的GET請求
package mainimport ("fmt""io/ioutil""net/http" )func main(){resp, err := http.Get("http://www.baidu.com?name=Paul_Chan&age=26")if err != nil {fmt.Println(err)return}defer resp.Body.Close()body, _ := ioutil.ReadAll(resp.Body)fmt.Println(string(body)) }如果我們想要把一些參數做成變量而不是直接放到url中怎么操作,代碼例子如下:
package mainimport ("fmt""io/ioutil""net/http""net/url" )func main(){params := url.Values{}Url, err := url.Parse("http://www.baidu.com")if err != nil {return}params.Set("name","Paul_Chan")params.Set("age","26")//如果參數中有中文參數,這個方法會進行URLEncodeUrl.RawQuery = params.Encode()urlPath := Url.String()fmt.Println(urlPath) // https://www.baidu.com?age=26&name=Paul_chanresp,err := http.Get(urlPath)defer resp.Body.Close()body, _ := ioutil.ReadAll(resp.Body)fmt.Println(string(body)) }解析JSON類型的返回結果
package mainimport ("encoding/json""fmt""io/ioutil""net/http" )type result struct {Args string `json:"args"`Headers map[string]string `json:"headers"`Origin string `json:"origin"`Url string `json:"url"` }func main() {resp, err := http.Get("http://xxx.com")if err != nil {return}defer resp.Body.Close()body, _ := ioutil.ReadAll(resp.Body)fmt.Println(string(body))var res result_ = json.Unmarshal(body,&res)fmt.Printf("%#v", res) }GET請求添加請求頭
package mainimport ("fmt""io/ioutil""net/http" )func main() {client := &http.Client{}req,_ := http.NewRequest("GET","http://xxx.com",nil)req.Header.Add("name","Paul_Chan")req.Header.Add("age","26")resp,_ := client.Do(req)body, _ := ioutil.ReadAll(resp.Body)fmt.Printf(string(body)) }從上述的結果可以看出我們設置的頭是成功了:
{"args": {}, "headers": {"Accept-Encoding": "gzip", "Age": "26", "Host": "xxx.com", "Name": "Paul_Chan", "User-Agent": "Go-http-client/1.1"}, "origin": "211.138.20.170, 211.138.20.170", "url": "https://xxx.com" }golang 發起POST請求
基本的POST使用
package mainimport ("fmt""io/ioutil""net/http""net/url" )func main() {urlValues := url.Values{}urlValues.Add("name","Paul_Chan")urlValues.Add("age","26")resp, _ := http.PostForm("http://xxx.com/post",urlValues)body, _ := ioutil.ReadAll(resp.Body)fmt.Println(string(body)) } //結果如下: /****************** {"args": {}, "data": "", "files": {}, "form": {"age": "26", "name": "Paul_Chan"}, "headers": {"Accept-Encoding": "gzip", "Content-Length": "19", "Content-Type": "application/x-www-form-urlencoded", "Host": "httpbin.org", "User-Agent": "Go-http-client/1.1"}, "json": null, "origin": "211.138.20.170, 211.138.20.170", "url": "https://httpbin.org/post" } ******************/另外一種方式
package mainimport ("fmt""io/ioutil""net/http""net/url""strings" )func main() {urlValues := url.Values{"name":{"Paul_Chan"},"age":{"26"},}reqBody:= urlValues.Encode()resp, _ := http.Post("http://xxx.com/post", "text/html",strings.NewReader(reqBody))body,_:= ioutil.ReadAll(resp.Body)fmt.Println(string(body)) } //結果如下: /************** {"args": {}, "data": "age=26&name=Paul_Chan", "files": {}, "form": {}, "headers": {"Accept-Encoding": "gzip", "Content-Length": "19", "Content-Type": "text/html", "Host": "httpbin.org", "User-Agent": "Go-http-client/1.1"}, "json": null, "origin": "211.138.20.170, 211.138.20.170", "url": "https://httpbin.org/post" } ***************/發送JSON數據的post請求
package mainimport ("bytes""encoding/json""fmt""io/ioutil""net/http" )func main() {client := &http.Client{}data := make(map[string]interface{})data["name"] = "zhaofan"data["age"] = "23"bytesData, _ := json.Marshal(data)req, _ := http.NewRequest("POST","http://httpbin.org/post",bytes.NewReader(bytesData))resp, _ := client.Do(req)body, _ := ioutil.ReadAll(resp.Body)fmt.Println(string(body)) } //結果如下: /************* {"args": {}, "data": "{\"age\":\"23\",\"name\":\"zhaofan\"}", "files": {}, "form": {}, "headers": {"Accept-Encoding": "gzip", "Content-Length": "29", "Host": "httpbin.org", "User-Agent": "Go-http-client/1.1"}, "json": {"age": "23", "name": "zhaofan"}, "origin": "211.138.20.170, 211.138.20.170", "url": "https://httpbin.org/post" } *************/不用client的post請求
package mainimport ("bytes""encoding/json""fmt""io/ioutil""net/http" )func main() {data := make(map[string]interface{})data["name"] = "zhaofan"data["age"] = "23"bytesData, _ := json.Marshal(data)resp, _ := http.Post("http://httpbin.org/post","application/json", bytes.NewReader(bytesData))body, _ := ioutil.ReadAll(resp.Body)fmt.Println(string(body)) }做任何事情,都要以創業的心態去干!
轉載于:https://www.cnblogs.com/Paul-watermelon/p/11386392.html
總結
以上是生活随笔為你收集整理的Go语言-基本的http请求操作的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 梦到蛇被打死预示着什么意思
- 下一篇: ChromeDriver与chrome对