【笔记】Go语言 http协议客户端实现
共用的CheckErr函数
package main
import(
"fmt"
)
func CheckErr(err error) {
defer func() {
ins,ok := recover().(error);
if ok {
fmt.Println("程序异常: ", ins.Error())
}
}()
if err != nil {
panic(err)
}
}
使用http.NewRequest方法
package main
import (
"fmt"
"net/http"
)
func main() {
testHttpNewRequest()
}
func testHttpNewRequest() {
client := http.Client{} //创建一个client
request,err := http.NewRequest("GET", "https://www.codeforces.com",nil) //创建一个request, 函数有三个参数:method :请求方法, url:请求URL, body:可选参数
CheckErr(err) // 自定义函数,检测错误
cookName := &http.Cookie{Name:"username",Value:"greenty"}
request.AddCookie(cookName) //添加cookie
response,err := client.Do(request) //发送request,获得response
CheckErr(err)
defer response.Body.Close()
request.Header.Set("Accept-Language","zh-ch")
fmt.Printf("Header: %+v\n",request.Header)
fmt.Printf("响应状态码: %v\n",response.StatusCode) //查看请求头的信息
if response.StatusCode == 200 {
fmt.Println("网络请求成功")
} else {
fmt.Println("网络请求失败")
}
}
golang的http cookie
在服务端程序开发的过程中,cookie经常被用于验证用户登录。
为什么Response.Body需要被关闭
使用client.Get方法
/*
使用client.Get()方法
1. 创建client对象
2. 使用client调用Get()方法
*/
package main
import (
"fmt"
"net/http"
)
func main() {
testClientGet()
}
func testClientGet() {
client := http.Client{} //所有值默认
response,err := client.Get("https://www.toutiao.com/search/suggest/initial_page/")
CheckErr(err)
fmt.Printf("响应状态码: %v\n",response.StatusCode)
if response.StatusCode == 200 {
fmt.Println("网络请求成功")
defer response.Body.Close()
} else {
fmt.Println("网络请求失败")
}
}
使用http.Get()方法
package main
import (
"fmt"
"net/http"
)
func main() {
testHttpGet()
}
func testHttpGet() {
response, err := http.Get("http://www.baidu.com")
CheckErr(err)
fmt.Printf("响应码: %v\n",response.StatusCode)
if response.StatusCode == 200 {
defer response.Body.Close()
fmt.Println("网络请求成功")
} else {
fmt.Println("网络请求失败")
}
}