Go 实现 web 客户端

在这节,将学习更多关于使用 Go 开发 web 客户端。这个 web 客户端工具的名字是 webClient.go,分为四部分展示。

webClient.go 的第一部分包含如下代码:

  1. package main
  2. import (
  3. "fmt"
  4. "io"
  5. "net/http"
  6. "os"
  7. "path/filepath"
  8. )

webClient.go 的第二部分是读取命令行参数获得期望的 URL:

  1. func main() {
  2. if len(os.Args) != 2 {
  3. fmt.Printf("Usage: %s URL\n", filepath.Base(os.Args[0]))
  4. return
  5. }
  6. URL := os.Args[1]

webClient.go 的第三部分是实际操作发生的地方:

  1. data, err := http.Get(URL)
  2. if err != nil {
  3. fmt.Println(err)
  4. return

http.Get() 调用做了所有的工作,当您不想要处理参数和选项时它是相当的方便。然而,这样的调用方式在处理过程中没有灵活性。注意,http.Get() 返回一个 http.Response 变量。

余下的代码如下:

  1. } else {
  2. defer data.Body.Close()
  3. _, err := io.Copy(os.Stdout, data.Body)
  4. if err != nil {
  5. fmt.Println(err)
  6. return
  7. }
  8. }
  9. }

上面这段代码复制 http.Response 结构的 Body 字段内容到标准输出。

执行 webClient.go 将产生如下输出:

只有已小部分展示在这

12.9 Go实现web客户端 - 图1

webClient.go 的主要问题是几乎不能控制处理过程——您要么获得全部 HTML 输出,要么什么都没有!