0%

go-发起网络请求

go-发起网络请求:

package main

import (
"github.com/mozillazg/request"
"log"
"net/http"
)

func main() {
// request请求库常规用法,用来发起请求,获取响应
c := new(http.Client) //new 初始化一个 新的 http.Client 实例 分配个 变量 c
req := request.NewRequest(c) // request.NewRequest 创建一个新的http请求

// 添加头部信息
req.Headers = map[string]string{
"Accept-Encoding": "gzip,deflate,sdch",
"Accept": "text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8",
}
req.Data = map[string]string{
"searchkey": name,
}
url := "https://www.xbiquge.la/modules/article/waps.php"
resp, _ := req.Post(url)
defer resp.Body.Close() // 不要忘记关闭响应体

html, err := resp.Text()
if err != nil {
Err = err
log.Fatal(err)
}
println(html)
}

添加头部信息第二种方式:

第一种方式在上面的代码中

// 用set的方法 设置头部信息
package main

import (
"github.com/mozillazg/request"
"log"
"net/http"
)

func main() {
// request请求库常规用法,用来发起请求,获取响应
c := new(http.Client) //new 初始化一个 新的 http.Client 实例 分配个 变量 c
req := request.NewRequest(c) // request.NewRequest 创建一个新的http请求

// 添加头部信息 Header.Set 方法会自动处理头部的键,使其符合 HTTP 标准
req.Header.Set("Accept-Encoding", "gzip,deflate,sdch")
req.Header.Set("Accept", "text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8")
}

另外:如果一个键中存在多个值,上面的方法就不实用了,需要用下面的方法添加(发起网络请求的那个不限制)

// 用set的方法 设置头部信息
package main

import (
"github.com/mozillazg/request"
"log"
"net/http"
)

func main() {
// request请求库常规用法,用来发起请求,获取响应
c := new(http.Client) //new 初始化一个 新的 http.Client 实例 分配个 变量 c
req := request.NewRequest(c) // request.NewRequest 创建一个新的http请求

// 添加头部信息 Header.Set 方法会自动处理头部的键,使其符合 HTTP 标准
req.Header.Set("Accept", "text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8")

// 这样就在 Accept-Encoding 中同时添加了 三个值
req.Header.Add("Accept-Encoding", "gzip")
req.Header.Add("Accept-Encoding", "deflate")
req.Header.Add("Accept-Encoding", "sdch")
}