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

  • 相关阅读:
    redis集群redis-cloud搭建
    Linux下搭建redis服务器
    mybatis主键返回
    分布式文件系统FastDFS
    mapper映射文件不发布
    dubbo发布和引用服务
    PageHelper分页插件
    F. Cards and Joy
    E. Paint the Tree 树形dp
    D. Sequence Sorting dp
  • 原文地址:https://www.cnblogs.com/tigerzhouv587/p/11458772.html
Copyright © 2011-2022 走看看