zoukankan      html  css  js  c++  java
  • go 发送http请求

    普通的get请求

    package main
    
    import (
        "io/ioutil"
        "fmt"
        "net/http"
    )
    
    func main() {
        res,_ :=http.Get("https://www.baidu.com/")
        defer res.Body.Close()
        body,_ := ioutil.ReadAll(res.Body)
        fmt.Print(body)
    }

    带参数的get请求(参数不放在url里)

    package main
    
    import (
        "fmt"
        "io/ioutil"
        "net/http"
        "net/url"
    )
    
    func main(){
        params := url.Values{}
        Url, _:= url.Parse("https://www.baidu.com/")
        params.Set("name","zhaofan")
        params.Set("age","23")
        //如果参数中有中文参数,这个方法会进行URLEncode
        Url.RawQuery = params.Encode()
        urlPath := Url.String()
        fmt.Println(urlPath) //等同于https://www.xxx.com?age=23&name=zhaofan
        resp,_ := http.Get(urlPath)
        defer resp.Body.Close()
        body, _ := ioutil.ReadAll(resp.Body)
        fmt.Println(string(body))
    }

    get请求添加请求头

    package main
    
    import (
        "fmt"
        "io/ioutil"
        "net/http"
    )
    
    func main() {
        client := &http.Client{}
        req,_ := http.NewRequest("GET","http://www.xxx.com",nil)
        req.Header.Add("name","zhaofan")
        req.Header.Add("age","3")
        resp,_ := client.Do(req)
       defer resp.Body.close() body, _ :
    = ioutil.ReadAll(resp.Body) fmt.Printf(string(body)) }

    post请求

    package main
    
    import (
        "fmt"
        "io/ioutil"
        "net/http"
        "net/url"
    )
    
    func main() {
        urlValues := url.Values{}
        urlValues.Add("name","zhaofan")
        urlValues.Add("age","22")
        resp, _ := http.PostForm("http://www.xxx.com",urlValues)
    defer resp.Body.close() body, _ :
    = ioutil.ReadAll(resp.Body) fmt.Println(string(body)) }

    post请求的另一种方式

    package main
    
    import (
        "fmt"
        "io/ioutil"
        "net/http"
        "net/url"
        "strings"
    )
    
    func main() {
        urlValues := url.Values{
            "name":{"zhaofan"},
            "age":{"23"},
        }
        reqBody:= urlValues.Encode()
        resp, _ := http.Post("http://www.xxx.com/post", "text/html",strings.NewReader(reqBody))
    defer resp.Body.close() body,_:
    = ioutil.ReadAll(resp.Body) fmt.Println(string(body)) }

    post请求发送json数据

    package main
    
    import (
        "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://www.xxx.com",bytes.NewReader(bytesData))
        resp, _ := client.Do(req)
    defer resp.Body.close() body, _ :
    = ioutil.ReadAll(resp.Body) fmt.Println(string(body)) }

    不用client
    package main
    
    import (
        "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://www.xxx.com","application/json", bytes.NewReader(bytesData))
    defer resp.Body.close() body, _ := ioutil.ReadAll(resp.Body) fmt.Println(string(body)) }
     

     说白了,我们记住http.get 和http.post就可以了

  • 相关阅读:
    【HDU 2507】【ACM-ICPC算法基础训练教程 题1-6】 迷瘴(贪心)
    【算法】Floyd-Warshall算法(任意两点间的最短路问题)(判断负圈)
    【读书笔记】2015年考研英语二真题翻译(帮你克服艰难之路的真理+熟路效应)
    visio给任意图形进行填充
    scanf清除缓存区
    macbook安装并破解Clion2018(Pycharm也一样)
    mac电脑对ntfs格式硬盘进行写操作(简单说就是向ntfs硬盘拷贝东西)
    查找mac下腾讯视频下载地址
    PyQt5初级教程(一)
    迷途指针
  • 原文地址:https://www.cnblogs.com/tigerzhouv587/p/11458772.html
Copyright © 2011-2022 走看看