golang入門案例之http client請求

來源:互聯網
上載者:User
這是一個建立於 的文章,其中的資訊可能已經有所發展或是發生改變。

發請求,接收接送,並解析

package mainimport ("fmt""net/http""io/ioutil""net/url""encoding/json""os")type Student struct {Name    stringAge     intGuake   boolClasses []stringPrice   float32}func (s *Student) ShowStu() {fmt.Println("show Student :")fmt.Println("\tName\t:", s.Name)fmt.Println("\tAge\t:", s.Age)fmt.Println("\tGuake\t:", s.Guake)fmt.Println("\tPrice\t:", s.Price)fmt.Printf("\tClasses\t: ")for _, a := range s.Classes {fmt.Printf("%s ", a)}fmt.Println("")}type multitypeTest struct {One string `json:"one"`Two string `json:"two"`}func (s *multitypeTest) Showmul() {fmt.Println("show Student :")fmt.Println("\tName\t:", s.One)fmt.Println("\tAge\t:", s.Two)}func IndexHandler(w http.ResponseWriter, r *http.Request) {fmt.Fprintln(w, "hello world")}func main() {//jsonTest()httpGet()}func httpPostForm() {resp, err := http.PostForm("",url.Values{"key": {"Value"}, "id": {"123"}})if err != nil {// handle error}defer resp.Body.Close()body, err := ioutil.ReadAll(resp.Body)if err != nil {// handle error}fmt.Println(string(body))}func httpGet() {resp, err := http.Get("https://X.rong360.com/XXX/XXX")CheckError(err)defer resp.Body.Close()body, err := ioutil.ReadAll(resp.Body)CheckError(err)fmt.Println(string(body))//f1 := &multitypeTest{//One:"a",//Two:"b",//}//f1.Showmul()//fjson1, err := json.Marshal(f1)//fmt.Println(string(fjson1))CheckError(err)f2 := &multitypeTest{}err = json.Unmarshal([]byte(body), &f2)CheckError(err)f2.Showmul()}func jsonTest() {//解析固定結構的jsonst := &Student{"Xiao Ming",16,true,[]string{"Math", "English", "Chinese"},9.99,}st1, err := json.Marshal(st)fmt.Println(string(st1))CheckError(err)stb := &Student{}err = json.Unmarshal([]byte(st1), &stb)stb.ShowStu()////b := []byte(`{1:"Wednesday",2:6,3:["Gomez","Morticia"]}`)////解析未知結構的json//var f interface{}//err = json.Unmarshal(b, &f)//CheckError(err)//這是f裡面儲存的是一個索引值對的map//f = map[string]interface{}{//"Name": "Wednesday",//"Age":  6,//"Parents": []interface{}{//"Gomez",//"Morticia",//},//}//m := f.(map[interface{}]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")//}//}}func CheckError(err error) {if err != nil {fmt.Fprintf(os.Stderr, "Fatal error: %s", err.Error())os.Exit(1)}}

  

 

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.