最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Go語言開發(fā)發(fā)送Get和Post請求的示例

 更新時間:2018年07月23日 10:46:32   作者:小歪子go  
這篇文章主要介紹了Go語言開發(fā)發(fā)送Get和Post請求的示例,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧

在使用Go語言進行開發(fā)的時候,有的時候可能要發(fā)送get或者post請求,下面我對post和get請求做一下簡單的介紹:關(guān)于 HTTP 協(xié)議

HTTP(即超文本傳輸協(xié)議)是現(xiàn)代網(wǎng)絡(luò)中最常見和常用的協(xié)議之一,設(shè)計它的目的是保證客戶機和服務(wù)器之間的通信。

HTTP 的工作方式是客戶機與服務(wù)器之間的 “請求-應(yīng)答” 協(xié)議。

客戶端可以是 Web 瀏覽器,服務(wù)器端可以是計算機上的某些網(wǎng)絡(luò)應(yīng)用程序。

通常情況下,由瀏覽器向服務(wù)器發(fā)起 HTTP 請求,服務(wù)器向瀏覽器返回響應(yīng)。響應(yīng)包含了請求的狀態(tài)信息以及可能被請求的內(nèi)容。

Go 語言中要請求網(wǎng)頁時,使用net/http包實現(xiàn)。官方已經(jīng)提供了詳細的說明,但是比較粗略,我自己做了一些增加。

一般情況下有以下幾種方法可以請求網(wǎng)頁:

Get, Head, Post, 和 PostForm 發(fā)起 HTTP (或 HTTPS) 請求:

GET請求:

GET請求直接將參數(shù)拼接在URL里面,如同下面的示例:

func GetData() {
 client := &http.Client{}
 resp, err := client.Get("http://api.map.baidu.com/place/v2/suggestion?query=廣州市天河區(qū)正佳廣場&region=廣州&city_limit=true&output=json&ak=yX8nC9Qzpckek7lY9gGWmlD4TFcA2tzYx3")
 defer resp.Body.Close()
 body, err := ioutil.ReadAll(resp.Body)
 if err != nil {
  fmt.Println(err)
 }
 fmt.Println(string(body))
}

POST請求

Post相關(guān)的請求有三種,分別是:http.post、http.postForm、http.Do請求。

http.post請求:

func httpPost() {
 resp, err := http.Post("http://www.01happy.com/demo/accept.php",
  "application/x-www-form-urlencoded",
  strings.NewReader("name=cjb"))
 if err != nil {
  fmt.Println(err)
 }
 defer resp.Body.Close()
 body, err := ioutil.ReadAll(resp.Body)
 if err != nil {
  // handle error
 }
 
 fmt.Println(string(body))
}

注意:請求里面的第二個參數(shù)必須帶,否則會報錯的。

http.postForm:

func PostData() {
 //client := &http.Client{}
 resp, err := http.PostForm("https://www.pgyer.com/apiv2/app/view", url.Values{"appKey": {"62c99290f0cb2c567cb153c1fba75d867e"},
  "_api_key": {"584f29517115df2034348b0c06b3dc57"}, "buildKey": {"22d4944d06354c8dcfb16c4285d04e41"}})
 defer resp.Body.Close()
 body, err := ioutil.ReadAll(resp.Body)
 if err != nil {
  fmt.Println(err)
 }
 fmt.Println(string(body))

}

對于比較復(fù)雜的http請求,我們可以用到http.do的方式進行請求

func httpDo() {
 client := &http.Client{}
 
 req, err := http.NewRequest("POST", "http://www.01happy.com/demo/accept.php", strings.NewReader("name=cjb"))
 if err != nil {
  // handle error
 }
 
 req.Header.Set("Content-Type", "application/x-www-form-urlencoded")
 req.Header.Set("Cookie", "name=anny")
 
 resp, err := client.Do(req)
 
 defer resp.Body.Close()
 
 body, err := ioutil.ReadAll(resp.Body)
 if err != nil {
  // handle error
 }
 
 fmt.Println(string(body))
}

以上就是本文的全部內(nèi)容,希望對大家的學習有所幫助,也希望大家多多支持腳本之家。

相關(guān)文章

  • Go讀取文件與寫入文件的三種方法操作指南

    Go讀取文件與寫入文件的三種方法操作指南

    在 Go 語言中也經(jīng)常會遇到操作文件的需求,下面這篇文章主要給大家介紹了關(guān)于Go讀取文件與寫入文件的三種方法操作,文中通過代碼介紹的非常詳細,需要的朋友可以參考下
    2022-09-09
  • golang 實現(xiàn)時間戳和時間的轉(zhuǎn)化

    golang 實現(xiàn)時間戳和時間的轉(zhuǎn)化

    這篇文章主要介紹了golang 實現(xiàn)時間戳和時間的轉(zhuǎn)化操作,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2021-05-05
  • Golang如何交叉編譯各個平臺的二進制文件詳解

    Golang如何交叉編譯各個平臺的二進制文件詳解

    這篇文章主要給大家介紹了關(guān)于Golang如何交叉編譯各個平臺的二進制文件的相關(guān)資料,并介紹了golang如何讓編譯生產(chǎn)的二進制文件變小,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2018-08-08
  • Go處理JSON數(shù)據(jù)的實現(xiàn)

    Go處理JSON數(shù)據(jù)的實現(xiàn)

    本文主要介紹了Go處理JSON數(shù)據(jù)的實現(xiàn),文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2023-02-02
  • Golang Recover處理錯誤原理解析

    Golang Recover處理錯誤原理解析

    Golang 中的?recover?是一個鮮為人知但非常有趣和強大的功能,讓我們看看它是如何工作的,以及在 Outreach.io 中如何利用它來處理 Kubernetes 中的錯誤
    2023-12-12
  • GoLang?channel關(guān)閉狀態(tài)相關(guān)操作詳解

    GoLang?channel關(guān)閉狀態(tài)相關(guān)操作詳解

    Channel?和?goroutine?的結(jié)合是?Go?并發(fā)編程的大殺器。而?Channel?的實際應(yīng)用也經(jīng)常讓人眼前一亮,通過與?select,cancel,timer?等結(jié)合,它能實現(xiàn)各種各樣的功能。接下來,我們就要介紹GoLang?channel關(guān)閉狀態(tài)相關(guān)操作
    2022-10-10
  • golang中的net/rpc包使用概述(小結(jié))

    golang中的net/rpc包使用概述(小結(jié))

    本篇文章主要介紹了golang中的net/rpc包使用概述(小結(jié)),小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2017-11-11
  • golang中byte和rune用法及新手易錯點總結(jié)

    golang中byte和rune用法及新手易錯點總結(jié)

    golang內(nèi)置類型有rune類型和byte類型,下面這篇文章主要給大家介紹了關(guān)于golang中byte和rune用法及新手易錯點總結(jié)的相關(guān)資料,文中通過代碼介紹的非常詳細,需要的朋友可以參考下
    2024-03-03
  • golang 如何獲取map所有key的方式

    golang 如何獲取map所有key的方式

    這篇文章主要介紹了golang 獲取map所有key的方式,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2021-04-04
  • GoLang string類型深入分析

    GoLang string類型深入分析

    string 作為 go 語言中的基礎(chǔ)類型,其實有一些需要反復(fù)揣摩的,可能是我們使用的場景太簡單,也可能是我們不需要那可憐的一點優(yōu)化來提高性能,對它也就沒那么上心了
    2023-01-01

最新評論

洪湖市| 咸宁市| 汉寿县| 衡阳县| 淳化县| 龙江县| 清苑县| 香格里拉县| 吴江市| 南皮县| 同江市| 平顶山市| 娄烦县| 双峰县| 石柱| 安徽省| 四平市| 珠海市| 长岛县| 广安市| 临城县| 新平| 秦皇岛市| 和政县| 林甸县| 芜湖县| 手游| 清新县| 浙江省| 商水县| 措勤县| 渭源县| 从化市| 手游| 柳州市| 湟中县| 思南县| 阳东县| 米泉市| 寿宁县| 普兰店市|