加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 大数据 > 正文

GOLANG简易http客户端实现

发布时间:2020-12-16 18:13:15 所属栏目:大数据 来源:网络整理
导读:下面的程序通过建立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 h

下面的程序通过建立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:portn", 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.1rnrn"))
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: %sn", err.Error())
os.Exit(1)
}
}
 

运行:

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读