Go基础编程:HTTP编程
2018-01-18 18:49
423 查看
Go语言标准库内建提供了net/http包,涵盖了HTTP客户端和服务端的具体实现。使用net/http包,我们可以很方便地编写HTTP客户端或服务端的程序。
浏览器输入url地址:
服务器运行结果:
1 HTTP服务端
示例代码:package main import ( "fmt" "net/http" ) //服务端编写的业务逻辑处理程序 //hander函数: 具有func(w http.ResponseWriter, r *http.Requests)签名的函数 func myHandler(w http.ResponseWriter, r *http.Request) { fmt.Println(r.RemoteAddr, "连接成功") //r.RemoteAddr远程网络地址 fmt.Println("method = ", r.Method) //请求方法 fmt.Println("url = ", r.URL.Path) fmt.Println("header = ", r.Header) fmt.Println("body = ", r.Body) w.Write([]byte("hello go")) //给客户端回复数据 } func main() { http.HandleFunc("/go", myHandler) //该方法用于在指定的 TCP 网络地址 addr 进行监听,然后调用服务端处理程序来处理传入的连接请求。 //该方法有两个参数:第一个参数 addr 即监听地址;第二个参数表示服务端处理程序,通常为空 //第二个参数为空意味着服务端调用 http.DefaultServeMux 进行处理 http.ListenAndServe("127.0.0.1:8000", nil) }
浏览器输入url地址:
服务器运行结果:
2 HTTP客户端
package main import ( "fmt" "io" "log" "net/http" ) func main() { //get方式请求一个资源 //resp, err := http.Get("http://www.baidu.com") //resp, err := http.Get("http://www.neihan8.com/article/index.html") resp, err := http.Get("http://127.0.0.1:8000/go") if err != nil { log.Println(err) return } defer resp.Body.Close() //关闭 fmt.Println("header = ", resp.Header) fmt.Printf("resp status %s\nstatusCode %d\n", resp.Status, resp.StatusCode) fmt.Printf("body type = %T\n", resp.Body) buf := make([]byte, 2048) //切片缓冲区 var tmp string for { n, err := resp.Body.Read(buf) //读取body包内容 if err != nil && err != io.EOF { fmt.Println(err) return } if n == 0 { fmt.Println("读取内容结束") break } tmp += string(buf[:n]) //累加读取的内容 } fmt.Println("buf = ", string(tmp)) }
参考资料
https://studygolang.com/articles/9467相关文章推荐
- Go基础编程:HTTP报文浅析
- Go编程基础<二>
- pthread编程基础 http://blog.chinaunix.net/uid-20528014-id-333508.html
- Linux 下Socket编程基础(转载自http://patton.spaces.eepw.com.cn/articles/article/item/27549)
- Go基础编程:环境搭建
- 网络编程基础:对HTTP协议的头信息详解
- go语言之行--网络编程、http处理流程详情
- Go基础编程:面向对象—匿名组合
- Go基础编程:面向对象—接口
- Go编程基础——接口interface
- go编程基础
- Go编程基础—并发(concurrency)
- Go基础编程:递归函数、函数类型、匿名函数与闭包
- java网络编程基础夯实08-基于HTTP编程(单线程)
- Go编程基础之三 类型与变量
- 【HTTP】TCP连接与套接字编程(socket)理论基础
- 1.http请求编程-->基础原理
- Go编程基础—代码规范
- Go基础编程:并发编程—select
- Go语言面组合式向对象编程基础总结