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

  • 相关阅读:
    php无法保存cookies问题解决
    【PHP基础】最快速简易apache+mysql本地PHP环境搭建教程
    php数组指针探究
    php学习笔记[php中面向对象三大特性之一[继承性]的应用]
    Cpanel如何设置index”缺省首页”?.htaccess设置网站默认首页次序?
    php学习笔记[php中面向对象三大特性之一[封装性]的应用]
    php学习笔记[PHP面向对象的程序设计]
    windows下配置nginx+php环境
    PHP学习之路(三)让我们开始环境搭建(搭建LMAP基于Ubuntu11.04)
    php session_unset与session_destroy的区别
  • 原文地址:https://www.cnblogs.com/tigerzhouv587/p/11458772.html
Copyright © 2011-2022 走看看