国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 網站 > 幫助中心 > 正文

詳解golang中發送http請求的幾種常見情況

2024-07-09 22:42:44
字體:
來源:轉載
供稿:網友

方式一 使用http.Newrequest

先生成http.client -> 再生成 http.request -> 之后提交請求:client.Do(request) -> 處理返回結果,每一步的過程都可以設置一些具體的參數,下面是一個最樸素最基本的例子:

//question ???將stdout重定向為response信息???package mainimport (  "fmt"  "io"  "net/http"  "os")func main() {  //生成client 參數為默認  client := &http.Client{}    //生成要訪問的url  url := "http://www.baidu.com"      //提交請求  reqest, err := http.NewRequest("GET", url, nil)    if err != nil {    panic(err)  }    //處理返回結果  response, _ := client.Do(reqest)    //將結果定位到標準輸出 也可以直接打印出來 或者定位到其他地方進行相應的處理  stdout := os.Stdout  _, err = io.Copy(stdout, response.Body)    //返回的狀態碼  status := response.StatusCode  fmt.Println(status)}

方式二 先生成client,之后用client.get/post..

client結構自己也有一些發送api的方法,比如client.get,client.post,client.postform..等等。基本上涵蓋了主要的http請求的類型,通常不進行什么特殊的配置的話,這樣就可以了,其實client的get或者post方法,也是對http.Newerequest方法的封裝,里面還額外添加了req.Header.Set("Content-Type", bodyType)一般用的話,也是ok的

方式三 http. Get/Post..

具體實現的時候,還是采用的先前提到的模式,先生成一個默認的client,之后調用http.Newrequest方法。

對每個步驟進行細節性的說明

生成client時候的參數配置

最常見的一個參數是使用https的方式發送信息時候client端的設置。如果生成client的時候,什么信息都不添加,就會使用默認的值。具體的信息包括:

Transport RoundTripper CheckRedirect func(req *Request, via []*Request) error     Jar CookieJar     Timeout time.Duration

第一個參數是一個RoundTripper接口,里面包含了一個RoundTrip函數,指定了一些http請求的基本機制。http.Transport中涉及到的參數較多,要是不指定的話,就會使用默認的DefaultTransport參數,里面包含一些默認的請求時間以及proxy機制之類的。具體的細節參數涉及到好多,有的都沒有使用到過比如那些我握手時間之類的,目前使用到的最多的就是https的相關參數:TLSClientConfig,這是一個*tls.Config類型,其中涉及到的參數還是有很多,一個基本的是用案例如下,僅僅是在配置中制定了rooca以及客戶度端使用的證書。相關的https的內容可以參考之前的這一篇

通常發送https請求的時候,前面的參數可以使用如下方式進行處理:

  pool := x509.NewCertPool()  caCertPath := "certs/cert_server/ca.crt"  caCrt, err := ioutil.ReadFile(caCertPath)  if err != nil {    fmt.Println("ReadFile err:", err)    return  }  pool.AppendCertsFromPEM(caCrt)  cliCrt, err := tls.LoadX509KeyPair("certs/cert_server/client.crt", "certs/cert_server/client.key")  if err != nil {    fmt.Println("Loadx509keypair err:", err)    return  }    tr := &http.Transport{    TLSClientConfig: &tls.Config{      RootCAs:   pool,      Certificates: []tls.Certificate{cliCrt},    },  }  client := &http.Client{Transport: tr}

生成request時候的參數配置

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 华阴市| 京山县| 云浮市| 祁连县| 海林市| 长春市| 库伦旗| 临猗县| 永丰县| 孝义市| 永顺县| 淮北市| 凤山市| 舞钢市| 措勤县| 大化| 海门市| 屏南县| 北海市| 西安市| 金堂县| 玉山县| 阳新县| 博罗县| 多伦县| 揭阳市| 平谷区| 重庆市| 田东县| 中西区| 都匀市| 高安市| 邻水| 陆良县| 从化市| 石台县| 定边县| 磐石市| 万安县| 阳谷县| 镇康县|