zoukankan      html  css  js  c++  java
  • go http client, http server

    Go语言中的HTTP client, server非常简单。具体如下。

    HTTP Server

    package  main
    
    import (
            "fmt"
            "html"
            "io/ioutil"
            "log"
            "net/http"
    
    )
    
    
    func main() {
    
            http.HandleFunc("/bar", func (w http.ResponseWriter, r *http.Request){
                    fmt.Fprintf(w, "Hello, %q", html.EscapeString(r.URL.Path))
    
                    if r.Method == "POST" {
                            b, err := ioutil.ReadAll(r.Body)
                            if err != nil {
                                    log.Println("Read failed:", err)
                            }
                            defer r.Body.Close()
    
    
                            log.Println("b:", string(b))
                    } else {
    
                            log.Println("ONly support Post")
                            w.Write([]byte("Only support post"))
                    }
    
            })
    
            log.Fatal(http.ListenAndServe(":8080", nil))
    
    }
    

    HTTP Client

    1. GET方式

      package main
      
      import (
              "io/ioutil"
              "log"
              "net/http"
      
      )
      
      
      func main() {
      
              url := "http://127.0.0.1:8080/bar"
      
              resp, err := http.Get(url)
              if err != nil {
                      log.Println("Get failed:", err)
                      return
              }
      
              defer resp.Body.Close()
      
              if resp.StatusCode != http.StatusOK {
                      log.Println("statuscode:", resp.StatusCode)
      
              }
      
              content, err := ioutil.ReadAll(resp.Body)
              if err != nil {
                      log.Println("Read failed:", err)
              }
      
      
              log.Println("content:", string(content))
      
      }
      
    2. POST方式

      package main
      
      import (
              "bytes"
              "io/ioutil"
              "log"
              "net/http"
      
      )
      
      
      func main() {
      
              url := "http://127.0.0.1:8080/bar"
              contentType := "application/json;charset=utf-8"
      
              b := []byte("Hello, Server")
              body := bytes.NewBuffer(b)
      
              resp, err := http.Post(url, contentType, body)
              if err != nil {
                      log.Println("Post failed:", err)
                      return
              }
      
              defer resp.Body.Close()
      
      
              content, err := ioutil.ReadAll(resp.Body)
              if err != nil {
                      log.Println("Read failed:", err)
                      return
              }
      
      
              log.Println("content:", string(content))
      
      }
      
      

    注意:
    response的Body使用后记得close,即:

    resp.Body.Close()

    关于如何传递json格式数据,可以参考博文go http 传递json数据

  • 相关阅读:
    点击其他地方隐藏div
    jquery获得被选中radio的值
    c++几个新特性
    effective c++ (三)
    80X86保护模式及其编程(一)
    Linux内核完全注释之编程语言和环境(二)
    Linux内核完全注释之编程语言和环境(一)
    linux内核完全注释之微型计算机组成结构
    effective c++ (二)
    effective c++ (一)
  • 原文地址:https://www.cnblogs.com/lanyangsh/p/7966698.html
Copyright © 2011-2022 走看看