### 發起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
- 多線程:通道思路
- 多線程爬蟲:快代理