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\r\n"
post += "Content-Type: application/x-www-form-urlencoded\r\n"
post += "Content-Length: 37\r\n"
post += "Connection: keep-alive\r\n"
post += "Accept-Language: zh-CN,zh;q=0.8,en;q=0.6\r\n"
post += "\r\n"
post += "key=this is key&value=this is value\r\n"
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\n", key)
fmt.Printf("value is: %s\n", 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
2、硬件嵌入式开发: 75764412
3、Go语言交流群:9924600
闲置域名WWW.EXAI.CN (超级人工智能)出售。
另外建了几个QQ技术群:
2、全栈技术群:616945527
2、硬件嵌入式开发: 75764412
3、Go语言交流群:9924600
闲置域名WWW.EXAI.CN (超级人工智能)出售。

浙公网安备 33010602011771号