基于HTTP协议的网络服务
文章目录
一、HTTP协议的网络服务
HTTP协议是基于TCP/IP协议栈的,并且它也是一个面向普通文本的协议。
只要搞清楚了HTTP请求的报文(报文的头部(header)和主体(body))应该包含的内容,使用任何一个文本编译器,就饿可以编写一个完整的HTTP请求报文。
在这种情况下,直接使用
net.Dial函数,就可以。
使用net/http代码包中的程序实体,可以更便捷的访问基于HTTP协议的网络服务。其中最便捷的是使用http.Get函数。
1.1 使用http.Get函数访问HTTP协议的网络服务
package main
import (
"fmt"
"net/http"
)
func main() {
url1 := "http://www.google.cn/"
fmt.Printf("Send request to %q with method GET ... \n", url1)
response1, err := http.Get(url1)
if err != nil {
fmt.Printf("request sending error: %v\n", err)
}
defer response1.Body.Close()
line1 := response1.Proto + " " + response1.Status
fmt.Printf("The first line of response: \n %s \n", line1)
}
http.Get函数会返回两个结果值:
- 第一个结果值的类型是
*http.Response,它是网络服务给我们传回来的响应内容的结构化表示。 - 第二个结果值是error类型。它代表了在创建和发送HTTP请求,以及接受和解析HTTP响应的过程中可能发生的错误。
在http.Get函数内部会使用缺省的HTTP客户端,并调用它的Get方法以完成功能。缺省客户端类型是*http.Client,由公开变量DefaultClient代表。
1.2 使用缺省客户端DefaultClient(类型为*http.Client )
package main
import (
"fmt"
"net/http"
)
func main() {
url1 := "http://www.google.cn/"
fmt.Printf("Send request to %q with method GET ... \n", url1)
// response1, err := http.Get(url1)
response1, err := http.DefaultClient

本文深入探讨了Golang如何利用HTTP协议构建网络服务,包括使用函数和DefaultClient访问服务,Transport字段及其DialContext和超时设置,以及空闲连接的管理和避免。此外,文章还讨论了HTTP服务器的Serve方法和停止服务的优雅方式。
最低0.47元/天 解锁文章
1063

被折叠的 条评论
为什么被折叠?



