### 发起GET请求
> func NewRequest(method,urlStr,body ioReader) (*Request error)
> method,请求方法,如GET
> urlStr,请求url
> body,参数,get请求传空(nil)
>
```
package main
import (
"fmt"
"io/ioutil"
"net/http"
//net/http来请求,io/ioutil来解析
)
func main() {
// 创建一个客户端对象client
client := &http.Client{}
// 创建一个请求对象 request
request, err := http.NewRequest("GET", "http://www.baidu.com", nil)
if err != nil {
fmt.Println(err)
}
// client客户端 调用do方法 发起请求 response接收数据
response, err := client.Do(request)
// 输出 响应体里面的状态码 200
fmt.Println(response.Body)
// 解析response.Body数据
res, err := ioutil.ReadAll(response.Body)
if err != nil {
fmt.Println(err)
}
// 响应内容 body
fmt.Println(string(res))
}
```
### 使用Cookie,模拟用户登录
```
package main
import (
"fmt"
"net/http"
"strconv"
)
func main() {
// 创建一个请求客户端
client := &http.Client{}
request, err := http.NewRequest("GET", "http://www.baidu.com", nil)
if err != nil {
fmt.Println(err)
}
// 使用http.Cookie结构体初始化一个cookie键值对
cookie := &http.Cookie{Name: "userId", Value: strconv.Itoa(123456)}
// 使用前面构造的request方法AddCookie往请求中添加Cookie
request.AddCookie(cookie)
request.AddCookie(&http.Cookie{Name: "session", Value: "ajkhkjgh="})
// client客户端 调用do方法 发起请求 response接收数据
response, err := client.Do(request)
// 打印设置的 cookie
fmt.Println(response.Request.Cookies())
}
```
### 设置请求头 Header
```
package main
import (
"fmt"
"net/http"
)
func main() {
// 创建客户端对象
client := &http.Client{}
request, err := http.NewRequest("GET", "http://www.baidu.com/", nil)
if err != nil {
fmt.Println(err)
}
// 设置request的请求头 Header
request.Header.Set("Accept", "application/")
//client客户端 调用do方法 发起请求 response接收数据
response, err := client.Do(request)
// 获取响应头 取出响应头里面的 Content-Type
//fmt.Println(response.Header)
fmt.Println(response.Header.Get("Content-Type"))
// 获取请求头
fmt.Println(response.Request.Header)
}
```
### 使用http包中的get请求方法
> func Get(url string) (resp *Response, err error)
```
package main
import (
"fmt"
"io/ioutil"
"net/http"
)
func main() {
// http.Get()其实就是DefaultClient.Get(url)
// 对于一般的http Request 可以使用,但是不能定制Request
response, err := http.Get("http://www.baidu.com")
if err != nil {
fmt.Println(err)
}
defer response.Body.Close()
// 打印响应头
fmt.Println(response.Header)
// 打印body
body, err := ioutil.ReadAll(response.Body)
fmt.Println(string(body))
}
```
- 安装开发环境
- 安装开发环境
- 安装详细教程
- 引入包
- Go语言基础
- 基本变量与数据类型
- 变量
- 数据类型
- 指针
- 字符串
- 代码总结
- 常量与运算符
- 常量
- 运算符
- 流程控制
- if判断
- for循环
- switch分支
- goto跳转
- 斐波那契数列
- Go语言内置容器
- 数组
- 切片
- 映射
- 函数
- 函数(上)
- 函数(中)
- 函数(下)
- 小节
- 包管理
- 结构体
- 结构体(上)
- 结构体(中)
- 结构体(下)
- 小节
- 错误处理
- 错误处理
- 宕机
- 错误应用
- 小节
- 文件操作
- 获取目录
- 创建和删除目录
- 文件基本操作(上)
- 文件基本操作(中)
- 文件基本操作(下)
- 处理JSON文件
- 接口与类型
- 接口的创建与实现
- 接口赋值
- 接口嵌入
- 空接口
- 类型断言(1)
- 类型断言(2)
- 小节
- 并发与通道
- goroutine协程
- runtime包
- 通道channel
- 单向通道channel
- select
- 线程同步
- 多线程的深入学习
- http编程
- http简介
- Client和Request
- get请求
- post请求
- 模块函数方法
- 模块
- fmt库,模块
- 项目练习
- 爬虫:高三网
- 爬虫:快代理
- 爬虫:快代理2
- 多线程:通道思路
- 多线程爬虫:快代理