Golang中基于HTTP协议的网络服务

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

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

基于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
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值