golang获取http响应

发布时间:2024-07-05 00:35:07

开发使用Golang语言进行HTTP网络请求是一种高效且可靠的方式。通过Golang的标准库内置的http包,我们可以很容易地发送请求并获取响应。在本文中,将介绍如何使用Golang编写代码来发送HTTP请求并处理返回的响应。

发送GET请求

想要发送一个GET请求,我们需要创建一个http.Client对象,并使用该对象的Get方法来发送请求。下面是一个简单的示例代码:

``` package main import ( "fmt" "log" "net/http" ) func main() { resp, err := http.Get("https://api.example.com") if err != nil { log.Fatal(err) } defer resp.Body.Close() fmt.Println("Response Status:", resp.Status) fmt.Println("Response Headers:", resp.Header) body, err := ioutil.ReadAll(resp.Body) if err != nil { log.Fatal(err) } fmt.Println("Response Body:", string(body)) } ```

首先,我们发送了一个GET请求到"https://api.example.com"并将返回的响应保存在resp变量中。然后,我们通过调用resp.Body.Close()来关闭响应主体。接下来,我们打印了响应的状态和头部信息。最后,我们通过ioutil包的ReadAll方法将响应的主体内容读取为字节切片,并将其转换为字符串后打印出来。

发送POST请求

如果我们需要发送一个POST请求,并且希望在请求体中包含数据,我们可以使用http.NewRequest方法创建一个新的请求对象,并指定请求的方法、URL和请求体。下面是一个发送POST请求的示例代码:

``` package main import ( "fmt" "io/ioutil" "log" "net/http" "strings" ) func main() { url := "https://api.example.com" payload := strings.NewReader("key1=value1&key2=value2") req, err := http.NewRequest("POST", url, payload) if err != nil { log.Fatal(err) } req.Header.Set("Content-Type", "application/x-www-form-urlencoded") client := &http.Client{} resp, err := client.Do(req) if err != nil { log.Fatal(err) } defer resp.Body.Close() fmt.Println("Response Status:", resp.Status) fmt.Println("Response Headers:", resp.Header) body, err := ioutil.ReadAll(resp.Body) if err != nil { log.Fatal(err) } fmt.Println("Response Body:", string(body)) } ```

在这个示例中,我们首先定义了目标URL和请求体。然后,我们使用http.NewRequest方法创建一个新的请求对象,并将请求的方法设置为"POST",URL设置为目标URL,请求体设置为payload字符串转换而成的ReadCloser类型。接下来,我们通过调用req.Header.Set方法设置请求头部的Content-Type为"application/x-www-form-urlencoded"。然后,我们创建一个http.Client对象,并通过调用其Do方法发送请求并获取响应。最后,我们通过ioutil包的ReadAll方法读取响应主体,并将其打印出来。

设置请求头部

除了设置Content-Type之外,我们还可以在发送HTTP请求时设置其他的请求头部信息。例如,如果我们想要发送一个带有自定义头部的GET请求,我们可以通过http.NewRequest方法创建一个新的请求对象,并使用req.Header.Set方法来设置头部信息。下面是一个示例代码:

``` package main import ( "fmt" "log" "net/http" ) func main() { url := "https://api.example.com" req, err := http.NewRequest("GET", url, nil) if err != nil { log.Fatal(err) } req.Header.Set("X-Api-Key", "my-api-key") client := &http.Client{} resp, err := client.Do(req) if err != nil { log.Fatal(err) } defer resp.Body.Close() fmt.Println("Response Status:", resp.Status) fmt.Println("Response Headers:", resp.Header) } ```

在这个示例中,我们通过http.NewRequest方法创建了一个新的GET请求对象,并将请求的URL设置为目标URL。然后,我们通过调用req.Header.Set方法设置了一个名为"X-Api-Key"的自定义头部,其值为"my-api-key"。接下来,我们创建一个http.Client对象,并通过调用其Do方法发送请求并获取响应。最后,我们打印了响应的状态和头部信息。

通过Golang的http包,我们可以轻松地发送HTTP请求并处理返回的响应。无论是发送GET请求还是POST请求,都可以通过简单的几行代码完成。同时,我们还可以方便地设置请求头部信息,以满足业务需求。希望本文对你理解Golang获取HTTP响应有所帮助。

相关推荐