使用http.Get函数发送GET请求并获取响应

使用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操作。

后端开发标签