国产chinesehdxxxx野外,国产av无码专区亚洲av琪琪,播放男人添女人下边视频,成人国产精品一区二区免费看,chinese丰满人妻videos

beego的Httplib模塊

2023-11-21 10:45 更新

客戶端請求

httplib 庫主要用來模擬客戶端發(fā)送 HTTP 請求,類似于 Curl 工具,支持 JQuery 類似的鏈?zhǔn)讲僮?。使用起來相?dāng)?shù)姆奖悖煌ㄟ^如下方式進(jìn)行安裝:

go get github.com/astaxie/beego/httplib

如何使用

首先導(dǎo)入包

import (
    "github.com/astaxie/beego/httplib"
)

然后初始化請求方法,返回對象

req := httplib.Get("http://beego.me/")

然后我們就可以獲取數(shù)據(jù)了

str, err := req.String()
if err != nil {
    t.Fatal(err)
}
fmt.Println(str)

支持的方法對象

httplib 包里面支持如下的方法返回 request 對象:

  • Get(url string)
  • Post(url string)
  • Put(url string)
  • Delete(url string)
  • Head(url string)

支持 debug 輸出

可以根據(jù)上面五個(gè)方法返回的對象進(jìn)行調(diào)試信息的輸出:

req.Debug(true)

這樣就可以看到請求數(shù)據(jù)的詳細(xì)輸出

httplib.Get("http://beego.me/").Debug(true).Response()

//輸出數(shù)據(jù)如下
GET / HTTP/0.0
Host: beego.me
User-Agent: beegoServer

支持 HTTPS 請求

如果請求的網(wǎng)站是 HTTPS 的,那么我們就需要設(shè)置 client 的 TLS 信息,如下所示:

req.SetTLSClientConfig(&tls.Config{InsecureSkipVerify: true})

關(guān)于如何設(shè)置這些信息請?jiān)L問: http://gowalker.org/crypto/tls#Config

支持超時(shí)設(shè)置

通過如下接口可以設(shè)置請求的超時(shí)時(shí)間和數(shù)據(jù)讀取時(shí)間:

req.SetTimeout(connectTimeout, readWriteTimeout)

以上方法都是針對 request 對象的,所以你第一步必須是返回 request 對象,然后鏈?zhǔn)讲僮?,類似這樣的代碼:

httplib.Get("http://beego.me/").SetTimeout(100 * time.Second, 30 * time.Second).Response()

設(shè)置請求參數(shù)

對于 Put 或者 Post 請求,需要發(fā)送參數(shù),那么可以通過 Param 發(fā)送 k/v 數(shù)據(jù),如下所示:

req := httplib.Post("http://beego.me/")
req.Param("username","astaxie")
req.Param("password","123456")

發(fā)送大片的數(shù)據(jù)

有時(shí)候需要上傳文件之類的模擬,那么如何發(fā)送這個(gè)文件數(shù)據(jù)呢?可以通過 Body 函數(shù)來操作,舉例如下:

req := httplib.Post("http://beego.me/")
bt,err:=ioutil.ReadFile("hello.txt")
if err!=nil{
    log.Fatal("read file err:",err)
}
req.Body(bt)

設(shè)置 header 信息

除了請求參數(shù)之外,我們有些時(shí)候需要模擬一些頭信息,例如

Accept-Encoding:gzip,deflate,sdch
Host:beego.me
User-Agent:Mozilla/5.0 (Macintosh; Intel Mac OS X 10_9_0) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/31.0.1650.57 Safari/537.36

可以通過 Header 函數(shù)來設(shè)置,如下所示:

req := httplib.Post("http://beego.me/")
req.Header("Accept-Encoding","gzip,deflate,sdch")
req.Header("Host","beego.me")
req.Header("User-Agent","Mozilla/5.0 (Macintosh; Intel Mac OS X 10_9_0) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/31.0.1650.57 Safari/537.36")

設(shè)置 transport

http請求的傳輸由http.RoundTrip承載,因此我們可以實(shí)現(xiàn)接口以實(shí)現(xiàn)鏈接的控制。通過設(shè)置,我們可以實(shí)現(xiàn)長連接,如下所示:

var tp http.RoundTripper = &http.Transport{
    DialContext: (&net.Dialer{
        Timeout:   30 * time.Second,
        KeepAlive: 30 * time.Second,
        DualStack: true,
    }).DialContext,
    MaxIdleConns:          100,
    IdleConnTimeout:       90 * time.Second,
    ExpectContinueTimeout: 1 * time.Second,
}

req := httplib.Post("http://beego.me/")
req.SetTransport(tp)

httplib支持文件直接上傳接口

PostFile 第一個(gè)參數(shù)是 form 表單的字段名,第二個(gè)是需要發(fā)送的文件名或者文件路徑

b:=httplib.Post("http://beego.me/")
b.Param("username","astaxie")
b.Param("password","123456")
b.PostFile("uploadfile1", "httplib.pdf")
b.PostFile("uploadfile2", "httplib.txt")
str, err := b.String()
if err != nil {
    t.Fatal(err)
}

獲取返回結(jié)果

上面這些都是在發(fā)送請求之前的設(shè)置,接下來我們開始發(fā)送請求,然后如何來獲取數(shù)據(jù)呢?主要有如下幾種方式:

  • 返回 Response 對象,req.Response() 方法這個(gè)是 http.Response 對象,用戶可以自己讀取 body 的數(shù)據(jù)等。
  • 返回 bytes,req.Bytes() 方法直接返回請求 URL 返回的內(nèi)容
  • 返回 string,req.String() 方法直接返回請求 URL 返回的內(nèi)容
  • 保存為文件,req.ToFile(filename) 方法返回結(jié)果保存到文件名為 filename 的文件中
  • 解析為 JSON 結(jié)構(gòu),req.ToJSON(&result) 方法返回結(jié)構(gòu)直接解析為 JSON 格式,解析到 result 對象中
  • 解析為 XML 結(jié)構(gòu),req.ToXml(&result) 方法返回結(jié)構(gòu)直接解析為 XML 格式,解析到 result 對象中
以上內(nèi)容是否對您有幫助:
在線筆記
App下載
App下載

掃描二維碼

下載編程獅App

公眾號(hào)
微信公眾號(hào)

編程獅公眾號(hào)