使用http.Get函数发送GET请求并获取响应
在Go语言中,我们可以使用http包中的Get函数来发送GET请求并获取响应。该函数的原型如下:
func Get(url string) (resp *Response, err error)
其中url参数表示要请求的URL地址,该函数的返回值是一个*http.Response结构体指针和一个error类型的错误值。我们可以通过resp.Body成员变量来获取响应体的内容。
示例代码
下面是一个简单的例子,它向http://example.com发送一个GET请求并输出响应体内容:
package main
import (
"fmt"
"net/http"
)
func main() {
resp, err := http.Get("http://example.com")
if err != nil {
// 处理请求错误
return
}
defer resp.Body.Close()
// 读取响应体
data := make([]byte, 1024)
n, err := resp.Body.Read(data)
if err != nil {
// 处理读取错误
return
}
fmt.Println(string(data[:n]))
}
在以上代码中,我们通过http.Get函数向http://example.com发送一个GET请求,并获取其响应体。为了防止资源泄露,我们使用了defer语句来在函数结束时关闭响应体。接着,我们使用resp.Body.Read方法来读取响应体内容,将其存储在data字节数组中,并输出到控制台。
拓展
除了简单地获取响应体内容外,我们还可以通过resp.Header来获取响应头信息。此外,我们还可以设置请求头信息来模拟浏览器发送请求,这在爬虫应用中十分常见。
下面是一个设置请求头信息的示例代码:
package main
import (
"fmt"
"net/http"
)
func main() {
client := &http.Client{}
req, err := http.NewRequest("GET", "http://example.com", nil)
if err != nil {
// 处理请求错误
return
}
// 设置请求头信息
req.Header.Set("User-Agent", "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/58.0.3029.110 Safari/537.36")
resp, err := client.Do(req)
if err != nil {
// 处理请求错误
return
}
defer resp.Body.Close()
// 读取响应体
data := make([]byte, 1024)
n, err := resp.Body.Read(data)
if err != nil {
// 处理读取错误
return
}
fmt.Println(string(data[:n]))
}
在以上代码中,我们创建了一个http.Client结构体指针,并通过http.NewRequest方法创建了一个GET请求。接着,我们设置了请求头信息,并使用client.Do方法来执行请求,并获取响应体内容。
总结
本文介绍了如何使用http.Get函数发送GET请求并获取响应,包括读取响应体内容和设置请求头信息等拓展操作。在实际应用中,我们还可以根据具体需求来使用http包中的其他函数和结构体,来满足更加复杂的HTTP操作。