Skip to content
Permalink
Branch: master
Find file Copy path
Find file Copy path
Fetching contributors…
Cannot retrieve contributors at this time
67 lines (47 sloc) 1.55 KB

Go 实现 web 客户端

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

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

package main

import (
    "fmt"
    "io"
    "net/http"
    "os"
    "path/filepath"
)

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

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

    URL := os.Args[1]

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

    data, err := http.Get(URL)

    if err != nil {
        fmt.Println(err)
        return

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

余下的代码如下:

    } else {
        defer data.Body.Close()
        _, err := io.Copy(os.Stdout, data.Body)
        if err != nil {
            fmt.Println(err)
            return
        }
    }
}

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

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

只有已小部分展示在这

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

You can’t perform that action at this time.