• 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就可以了

  • 相关阅读:
    《走近心理学》第一章之行为和心理学
    《解忧杂货铺》读书笔记
    追求得到之日即其终止之时, 寻觅的过程亦即失去的过程。——村上
    简朴的生活、高贵的灵魂是人生的至高境界。——杨绛
    Laravel Seeder
    Git的使用 checkout push merge
    基于 GraphQL 构建 Laravel API —— 基本使用篇
    awk基础04-内置函数
    awk基础03-分支和循环语句
    awk基础02-变量-分隔符-数组
  • 原文地址:https://www.cnblogs.com/tigerzhouv587/p/11458772.html
Copyright © 2020-2023  润新知