【笔记】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
",request.Header)
	fmt.Printf("响应状态码: %v
",response.StatusCode) //查看请求头的信息
	if response.StatusCode == 200 {
		fmt.Println("网络请求成功")
	} else {
		fmt.Println("网络请求失败")
	}
}

在服务端程序开发的过程中,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
",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
",response.StatusCode)
	if response.StatusCode == 200 {
		defer response.Body.Close()
		fmt.Println("网络请求成功")
	} else {
		fmt.Println("网络请求失败")
	}
}
原文地址:https://www.cnblogs.com/greenty1208/p/13112005.html