Go语言的HTTP请求处理

GolangGolangBeginner
立即练习

This tutorial is from open-source community. Access the source code

💡 本教程由 AI 辅助翻译自英文原版。如需查看原文,您可以 切换至英文原版

简介

本实验旨在测试你使用 Go 语言中的 net/http 包发出 HTTP 请求的能力。


Skills Graph

%%%%{init: {'theme':'neutral'}}%%%% flowchart RL go(("`Golang`")) -.-> go/NetworkingGroup(["`Networking`"]) go/NetworkingGroup -.-> go/http_client("`HTTP Client`") subgraph Lab Skills go/http_client -.-> lab-15481{{"`Go语言的HTTP请求处理`"}} end

HTTP 客户端

你需要编写一个程序,向服务器发送 HTTP GET 请求,并打印 HTTP 响应状态以及响应体的前 5 行。

  • 程序应使用 net/http 包发出 HTTP GET 请求。
  • 程序应打印 HTTP 响应状态。
  • 程序应打印响应体的前 5 行。
  • 程序应妥善处理错误。
$ go run http-clients.go
响应状态: 200 OK
<!DOCTYPE html>
<html>
  <head>
    <meta charset="utf-8">
    <title>Go by Example</title>

以下是完整代码:

// Go 标准库在 `net/http` 包中对 HTTP 客户端和服务器提供了出色的支持。
// 在这个示例中,我们将使用它来发出简单的 HTTP 请求。
package main

import (
	"bufio"
	"fmt"
	"net/http"
)

func main() {

	// 向服务器发出 HTTP GET 请求。`http.Get` 是创建 `http.Client`
	// 对象并调用其 `Get` 方法的便捷捷径;它使用具有有用默认设置的
	// `http.DefaultClient` 对象。
	resp, err := http.Get("https://gobyexample.com")
	if err!= nil {
		panic(err)
	}
	defer resp.Body.Close()

	// 打印 HTTP 响应状态。
	fmt.Println("响应状态:", resp.Status)

	// 打印响应体的前 5 行。
	scanner := bufio.NewScanner(resp.Body)
	for i := 0; scanner.Scan() && i < 5; i++ {
		fmt.Println(scanner.Text())
	}

	if err := scanner.Err(); err!= nil {
		panic(err)
	}
}

总结

在本实验中,你已经学会了如何使用 Go 语言中的 net/http 包来发出 HTTP 请求并处理错误。

您可能感兴趣的其他 Golang 教程