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数据

  • 相关阅读:
    ウェブプロジャクトがジャワープロジャクトに参照する方法
    web.xml 中的listener、 filter、servlet 加载顺序及其详解
    财富定律
    jsp文件下载完整方法
    使用Axis开发Web Service程序
    CDH安装指南——酒仙网技术
    linux下 putty 的痛苦编译之路
    博客园
    windows 下 cannal & otter 配置
    Go 1.8 正式发布,编译时间比 Go 1.7 提高约 15%
  • 原文地址:https://www.cnblogs.com/lanyangsh/p/7966698.html
Copyright © 2011-2022 走看看