亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 編程 > Golang > 正文

Go語言Web編程實現Get和Post請求發送與解析的方法詳解

2020-04-01 19:05:32
字體:
來源:轉載
供稿:網友

本文實例講述了Go語言Web編程實現Get和Post請求發送與解析的方法。分享給大家供大家參考,具體如下:

這是一篇入門文章,通過一個簡單的例子介紹Golang的Web編程主要用到的技術。

文章結構包括:

1. Client-Get 請求
2. Client-Post 請求
3. Server 處理 Get 和 Post 數據

在數據的封裝中,我們部分采用了json,因而本文也涉及到Golang中json的編碼和解碼。

一、Client-Get

復制代碼 代碼如下:
package main
import (
        "fmt"
        "net/url"
        "net/http"
        "io/ioutil"
        "log"
)
func main() {
        u, _ := url.Parse("http://localhost:9001/xiaoyue")
        q := u.Query()
        q.Set("username", "user")
        q.Set("password", "passwd")
        u.RawQuery = q.Encode()
        res, err := http.Get(u.String());
        if err != nil {
              log.Fatal(err) return
        }
        result, err := ioutil.ReadAll(res.Body)
        res.Body.Close()
        if err != nil {
              log.Fatal(err) return
        }
        fmt.Printf("%s", result)
}

 

二、Client-Post

復制代碼 代碼如下:
package main
import (
        "fmt"
        "net/url"
        "net/http"
        "io/ioutil"
        "log"
        "bytes"
        "encoding/json"
)
type Server struct {
        ServerName string
        ServerIP   string
}
type Serverslice struct {
        Servers []Server
        ServersID  string
}
func main() {
        var s Serverslice
        var newServer Server;
        newServer.ServerName = "Guangzhou_VPN";
        newServer.ServerIP = "127.0.0.1"
        s.Servers = append(s.Servers, newServer)
        s.Servers = append(s.Servers, Server{ServerName: "Shanghai_VPN", ServerIP: "127.0.0.2"})
        s.Servers = append(s.Servers, Server{ServerName: "Beijing_VPN", ServerIP: "127.0.0.3"})
        s.ServersID = "team1"
        b, err := json.Marshal(s)
        if err != nil {
                fmt.Println("json err:", err)
        }
        body := bytes.NewBuffer([]byte(b))
        res,err := http.Post("http://localhost:9001/xiaoyue", "application/json;charset=utf-8", body)
        if err != nil {
                log.Fatal(err)
                return
        }
        result, err := ioutil.ReadAll(res.Body)
        res.Body.Close()
        if err != nil {
                log.Fatal(err)
                return
        }
        fmt.Printf("%s", result)
}

 

三、Server

復制代碼 代碼如下:
package main
import (
        "fmt"
        "net/http"
        "strings"
        "html"
        "io/ioutil"
        "encoding/json"
)
type Server struct {
        ServerName string
        ServerIP   string
}
type Serverslice struct {
        Servers []Server
        ServersID  string
}
func main() {
        http.HandleFunc("/", handler)
        http.ListenAndServe(":9001", nil)
}
func handler(w http.ResponseWriter, r *http.Request) {
        r.ParseForm() //解析參數,默認是不會解析的
        fmt.Fprintf(w, "Hi, I love you %s", html.EscapeString(r.URL.Path[1:]))
        if r.Method == "GET" {
                fmt.Println("method:", r.Method) //獲取請求的方法
                fmt.Println("username", r.Form["username"])
                fmt.Println("password", r.Form["password"])
                for k, v := range r.Form {
                        fmt.Print("key:", k, "; ")
                        fmt.Println("val:", strings.Join(v, ""))
                }
        } else if r.Method == "POST" {
                result, _:= ioutil.ReadAll(r.Body)
                r.Body.Close()
                fmt.Printf("%s/n", result)
                //未知類型的推薦處理方法
                var f interface{}
                json.Unmarshal(result, &f)
                m := f.(map[string]interface{})
                for k, v := range m {
                        switch vv := v.(type) {
                                case string:
                                        fmt.Println(k, "is string", vv)
                                case int:
                                        fmt.Println(k, "is int", vv)
                                case float64:
                                        fmt.Println(k,"is float64",vv)
                                case []interface{}:
                                        fmt.Println(k, "is an array:")
                                        for i, u := range vv {
                                                fmt.Println(i, u)
                                        }
                                default:
                                        fmt.Println(k, "is of a type I don't know how to handle")
                         }
                  }
                 //結構已知,解析到結構體
                 var s Serverslice;
                 json.Unmarshal([]byte(result), &s)
                 fmt.Println(s.ServersID);
                 for i:=0; i<len(s.Servers); i++ {
                         fmt.Println(s.Servers[i].ServerName)
                         fmt.Println(s.Servers[i].ServerIP)
                 }
        }
}

 

希望本文所述對大家Go語言程序設計有所幫助。

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
欧美成人亚洲成人| 欧美亚洲另类激情另类| 午夜精品一区二区三区在线视频| 欧美性猛交xxxx富婆弯腰| 亚洲级视频在线观看免费1级| 日韩电影大片中文字幕| 国产综合久久久久| 91免费精品视频| 国产成人精品视频在线观看| 色噜噜狠狠色综合网图区| 欧美大片在线免费观看| 欧美日韩中文字幕日韩欧美| 亚洲激情免费观看| 国产91成人在在线播放| 91香蕉电影院| 欧美丰满少妇xxxxx做受| 中文字幕亚洲情99在线| 91av视频导航| 欧美成人小视频| 国产婷婷97碰碰久久人人蜜臀| 97精品欧美一区二区三区| 亚洲国产精品人久久电影| 91免费观看网站| 精品日韩视频在线观看| 亚洲精品国产精品国自产在线| 欧美人与性动交a欧美精品| 欧美激情国产精品| 亚洲精品久久久一区二区三区| 亚洲国产精品va在线看黑人动漫| 久久影视电视剧免费网站清宫辞电视| 亚洲精品永久免费精品| 日韩在线观看你懂的| 欧美亚洲午夜视频在线观看| 91麻豆国产语对白在线观看| 成人有码在线播放| 亚洲人成网站免费播放| 午夜精品久久久久久99热软件| 88国产精品欧美一区二区三区| 国产精品亚洲综合天堂夜夜| 69视频在线免费观看| 91在线视频精品| 蜜臀久久99精品久久久久久宅男| 在线精品国产欧美| 亚洲二区中文字幕| 成人女保姆的销魂服务| 欧美日韩福利在线观看| 日韩av在线免费观看| 热re91久久精品国99热蜜臀| 欧美一级大片在线免费观看| 国产精品午夜视频| 97超视频免费观看| 国产精品69精品一区二区三区| 热久久这里只有精品| 午夜精品一区二区三区视频免费看| 欧美激情精品久久久久久久变态| 成人h视频在线观看播放| 久久久成人av| 一本大道久久加勒比香蕉| 国产日韩精品在线观看| 日韩av在线免费| 中文字幕亚洲欧美日韩2019| 欧美国产日本在线| 欧美国产日韩一区二区三区| 国产精品久久久久久久久久久久| 91色p视频在线| 91在线播放国产| 亚洲资源在线看| 亚洲精品在线观看www| 国产一区视频在线播放| 中文字幕亚洲综合久久筱田步美| 国产精品久久久久久久久久| 日韩精品中文字幕久久臀| 欧美色欧美亚洲高清在线视频| 欧美午夜精品在线| 日韩精品在线视频观看| 国产精品久在线观看| 日韩亚洲欧美成人| 亚洲人成在线播放| 欧美在线视频观看| 精品久久久久久久久国产字幕| 中文字幕自拍vr一区二区三区| 情事1991在线| 国内精品久久久久| 日韩国产精品视频| 伊人久久大香线蕉av一区二区| 中国日韩欧美久久久久久久久| 欧美性videos高清精品| 精品久久久一区二区| 91中文字幕在线观看| 日韩a**站在线观看| 91国产美女在线观看| 搡老女人一区二区三区视频tv| 欧美日本中文字幕| 国产精品第3页| 亚洲free嫩bbb| 亚洲美女精品成人在线视频| 日韩欧美主播在线| 日韩a**站在线观看| 国产一区二区三区视频在线观看| 亚洲人成电影在线观看天堂色| 中文字幕在线看视频国产欧美在线看完整| 亚洲自拍高清视频网站| 亚洲人成电影网站| 在线观看国产成人av片| 国产精品美女无圣光视频| 97国产精品人人爽人人做| 国模精品视频一区二区三区| 国产精品国语对白| 欧美大片大片在线播放| 欧美壮男野外gaytube| 日本高清久久天堂| 国产视频亚洲视频| 亚洲区在线播放| 欧美激情一级欧美精品| 日韩视频免费中文字幕| 欧美性生交xxxxx久久久| www.亚洲天堂| 日韩中文字幕在线免费观看| 欧美性xxxx极品高清hd直播| 在线不卡国产精品| 国产成人精品一区二区在线| 黑人巨大精品欧美一区二区三区| 亚洲丁香久久久| 亚洲a∨日韩av高清在线观看| 欧美激情伊人电影| 欧美日韩性视频在线| 精品国产成人av| 欧美成aaa人片在线观看蜜臀| 精品视频在线观看日韩| 欧美xxxx做受欧美.88| 日韩在线中文字| 高清欧美性猛交xxxx黑人猛交| 2019中文字幕免费视频| 夜夜嗨av色一区二区不卡| 亚洲丝袜av一区| 精品日韩美女的视频高清| 欧美区二区三区| 538国产精品一区二区在线| www.久久久久| 精品无人区太爽高潮在线播放| 日韩免费观看av| 亚洲a∨日韩av高清在线观看| 欧美成人在线网站| 亚洲精品视频二区| 97av在线影院| 色偷偷888欧美精品久久久| 26uuu国产精品视频| 久久久久国产精品免费| 国产日韩av高清| 国产999精品久久久| 欧美性受xxx| 久久琪琪电影院| 国产69精品99久久久久久宅男| 欧美日韩在线第一页| 尤物九九久久国产精品的分类| 国产xxx69麻豆国语对白| 国产精品草莓在线免费观看| 精品丝袜一区二区三区| 97色在线播放视频| 欧美国产第二页| 国产精品wwww| 亚洲偷熟乱区亚洲香蕉av| 欧美成人在线免费| 成人精品久久av网站|