GOLANG简易http客户端实现

xiaoxiao2021-02-27  156

下面的程序通过建立TCP连接来实现初步的HTTP协议,通过向网络主机发送HTTP HEAD请求,来读取网络主机返回的信息。

e.g.

package main import (     "bytes"     "fmt"     "io"     "net"     "os" ) func main() {     if len(os.Args) != 2 {         fmt.Fprintf(os.Stderr, "Usage: %s host:port\n", os.Args[0])         os.Exit(1)     }     service := os.Args[1]     conn, err := net.Dial("tcp", service)     checkError(err)     _, err = conn.Write([]byte("HEAD / HTTP/1.1\r\n\r\n"))     checkError(err)     result, err := readFully(conn)     checkError(err)     fmt.Println(string(result))     os.Exit(0) } func readFully(conn net.Conn) ([]byte, error) {     defer conn.Close()     result := bytes.NewBuffer(nil)     buffer := make([]byte, 1024)     for {         n, err := conn.Read(buffer)         if err != nil {             if err == io.EOF {                 fmt.Fprintln(os.Stdout, err.Error())                 break             }             return nil, err         }         result.Write(buffer[0:n])     }     return result.Bytes(), nil } func checkError(err error) {     if err != nil {         fmt.Fprintf(os.Stderr, "Fatal error: %s\n", err.Error())         os.Exit(1)     } }

运行:

转载请注明原文地址: https://www.6miu.com/read-14033.html

最新回复(0)