• Go入门笔记-24 Post数据


    方式1:

    package main
    
    import (
    	"fmt"
    	"net/http"
    	"net/url"
    )
    
    func main() {
    	data := make(url.Values)
    	data["key"] = []string{"this is key"}
    	data["value"] = []string{"this is value"}
    	res, err := http.PostForm("http://127.0.0.1/postpage", data)
    	if err != nil {
    		fmt.Println(err.Error())
    		return
    	}
    	defer res.Body.Close()
    
    	fmt.Println("post send success")
    }

    方式2:

    package main
    
    import (
    	"fmt"
    	"net"
    )
    
    func main() {
    	//因为post方法属于HTTP协议,HTTP协议以TCP为基础,所以先建立一个
    	//TCP连接,通过这个TCP连接来发送我们的post请求
    	conn, err := net.Dial("tcp", "127.0.0.1:80")
    	if err != nil {
    		fmt.Println(err.Error())
    		return
    	}
    	defer conn.Close()
    
    	//构造post请求
    	var post string
    	post += "POST /postpage HTTP/1.1
    "
    	post += "Content-Type: application/x-www-form-urlencoded
    "
    	post += "Content-Length: 37
    "
    	post += "Connection: keep-alive
    "
    	post += "Accept-Language: zh-CN,zh;q=0.8,en;q=0.6
    "
    	post += "
    "
    	post += "key=this is key&value=this is value
    "
    
    	if _, err := conn.Write([]byte(post)); err != nil {
    		fmt.Println(err.Error())
    		return
    	}
    	fmt.Println("post send success.")
    }

    服务端:

    package main
    
    import (
    	"fmt"
    	"net/http"
    )
    
    func main() {
    	http.HandleFunc("/postpage", func(w http.ResponseWriter, r *http.Request) {
    		//接受post请求,然后打印表单中key和value字段的值
    		if r.Method == "POST" {
    			var (
    				key   string = r.PostFormValue("key")
    				value string = r.PostFormValue("value")
    			)
    			fmt.Printf("key is  : %s
    ", key)
    			fmt.Printf("value is: %s
    ", value)
    		}
    	})
    
    	err := http.ListenAndServe(":80", nil)
    	if err != nil {
    		fmt.Println(err.Error())
    		return
    	}
    }  

    以上代码转自:

    http://blog.csdn.net/gophers/article/details/22870185

    测试结果

    不同代码编译成的大小不一样,如果考虑大小使用方式2

      

      

    本博客是个人工作中记录,遇到问题可以互相探讨,没有遇到的问题可能没有时间去特意研究,勿扰。
    另外建了几个QQ技术群:
    2、全栈技术群:616945527,加群口令abc123
    2、硬件嵌入式开发: 75764412
    3、Go语言交流群:9924600

    闲置域名www.nsxz.com出售(等宽等高字符四字域名)。
  • 相关阅读:
    DVWA的安装及报错解决
    隐写工具F5-steganography的使用
    python skimage库的安装
    密码学笔记——zip明文攻击
    密码学笔记-一段base64wp
    kali中网卡、ssh、apache的配置与开启
    密码学笔记——希尔密码
    密码学笔记——playfair密码
    使用electron-packager electron-builder electron-updater 打包vue项目,支持在线更新
    搭建vue脚手架,包含Axios、qs、Element-UI、mock等插件的安装配置
  • 原文地址:https://www.cnblogs.com/zhaogaojian/p/15171931.html
Copyright © 2020-2023  润新知