Go标准库–net/http学习
Go中对网络的支持提供了标准库,net包提供了可移植的网络I/O接口,包括TCP/IP、UDP、域名解析和Unix域socket。 http包提供了HTTP客户端和服务端的实现。 一般我们用http肯定多一些,下面来看一下http的使用方式。
1. Post和Get请求的使用
创建一个最简单的get请求:
package main
import (
"fmt"
"io/ioutil"
"net/http"
)
func main() {
resp, err := http.Get("http://www.baidu.com")
if err != nil {
fmt.Print("err",err)
}
closer := resp.Body
bytes, err := ioutil.ReadAll(closer)
fmt.Println(string(bytes))
}
执行程序可以获取百度首页的源码。
再看一个post请求的格式:
package main
import (
"bytes"
"fmt"
"io/ioutil"
"net/http"
)
func main() {
url := "http://www.baidu.com/comment/add"
body := "{\"userId\":223446,\"articleId\":443567,\"comment\":\"我是一条评论\"}"
response, err := http.Post(url, "•application/x-www-form-urlencoded", bytes.NewBuffer([]byte(body)))
if err != nil {
fmt.Println("err",err)
}
b1, err := ioutil.ReadAll(response.Body)
fmt.Println(string(b1))
}
上面的post请求第一个参数是url地址,第二个参数是Content-Type ,第三个参数是post请求参数的字节码。
Http Header里的Content-Type一般有这三种:
- application/x-www-form-urlencoded:数据被编码为名称/值对。这是标准的编码格式。
- multipart/form-data: 数据被编码为一条消息,页上的每个控件对应消息中的一个部分。
- text/plain: 数据以纯文本形式(text/json/xml/html)进行编码,其中不含任何控件或格式字符。postman软件里标的是RAW。
网页中form的enctype属性为编码方式,常用有两种:
- application/x-www-form-urlencoded,默认编码方式
- multipart/form-data
Go还提供了另一种Post请求的api:
func PostForm(<