用go写一个发送http请求
时间: 2024-05-02 20:18:26 浏览: 58
以下是使用Go语言编写的发送HTTP请求的示例代码:
```go
package main
import (
"fmt"
"net/http"
)
func main() {
url := "https://www.example.com"
// 创建一个 GET 请求
req, err := http.NewRequest("GET", url, nil)
if err != nil {
panic(err)
}
// 设置请求头
req.Header.Set("User-Agent", "My User Agent")
// 发送请求并获取响应
resp, err := http.DefaultClient.Do(req)
if err != nil {
panic(err)
}
defer resp.Body.Close()
// 读取响应内容
body, err := ioutil.ReadAll(resp.Body)
if err != nil {
panic(err)
}
// 打印响应内容
fmt.Println(string(body))
}
```
这个示例程序发送了一个 GET 请求到 https://www.example.com 网站,并设置了 User-Agent 请求头。它使用了 Go 标准库中的 net/http 包,该包提供了一个 HTTP 客户端,可以发送 HTTP 请求和接收 HTTP 响应。
其中,http.NewRequest() 函数创建了一个新的 HTTP 请求对象。它接受三个参数,分别是请求方法、请求 URL 和请求正文(在这个示例中,请求正文为 nil)。我们可以使用该函数设置请求头、请求体和其他请求信息。
http.DefaultClient.Do() 函数发送 HTTP 请求并返回 HTTP 响应。它接受一个 HTTP 请求对象作为参数,并返回一个 HTTP 响应对象和一个错误对象。我们可以使用该函数发送 GET、POST、PUT、DELETE 等各种类型的 HTTP 请求。
最后,我们使用 ioutil.ReadAll() 函数读取 HTTP 响应的正文,并将其转换为字符串并打印出来。注意,我们必须在使用完响应后关闭响应体,以释放底层资源。这里使用 defer 语句来确保在函数结束时关闭响应体。
阅读全文