import "net/http/httputil"
httputil包提供了HTTP公共函数,是对net / http包的更常见函数的补充。
指数
返回首页
- 变数
- func DumpRequest(req * http.Request,布尔)(dump [] byte,错误错误)
- func DumpRequestOut(req * http.Request,正文)([] byte,error)
- func DumpResponse(resp * http.Response,主体布尔)(dump [] byte,错误错误)
- func NewChunkedReader(r io.Reader)io.Reader
- func NewChunkedWriter(w io.Writer)io.WriteCloser
- 键入ClientConn
- func NewClientConn(c net.Conn,r * bufio.Reader)* ClientConn
- func NewProxyClientConn(c net.Conn,r * bufio.Reader)* ClientConn
- func(cc * ClientConn)Pending()int
- func(cc * ClientConn)Write(req * http.Request)(错误)
- func(cc * ClientConn)读(req * http.Request)(resp * http.Response,错误)
- func(cc * ClientConn)Do(要求* http.Request)(resp * http.Response,错误)
- func(cc * ClientConn)Hijack()(c net.Conn,r * bufio.Reader)
- func(cc * ClientConn)Close()错误
- 键入ServerConn
- func NewServerConn(c net.Conn,r * bufio.Reader)* ServerConn
- func(sc * ServerConn)Pending()int
- func(sc * ServerConn)Read()(req * http.Request,错误)
- func(sc * ServerConn)Write(req * http.Request,resp * http.Response)错误
- func(sc * ServerConn)Hijack()(c net.Conn,r * bufio.Reader)
- func(sc * ServerConn)Close()错误
- 类型ReverseProxy
- func NewSingleHostReverseProxy(target * url.URL)* ReverseProxy
- func(p * ReverseProxy)ServeHTTP(rw http.ResponseWriter,req * http.Request)
变数
VAR( ErrPersistEOF =&HTTP。ProtocolError {Errorstring,则: “持续连接关闭”} ErrClosed =&HTTP。ProtocolError {Errorstring,则: “连接由用户关闭”} ErrPipeline =&HTTP。ProtocolError {Errorstring,则: “管道错误”} )
var ErrLineTooLong = 错误。新的(“标题行太长”)
func DumpRequest
FUNC DumpRequest(REQ * HTTP。请求,身体布尔)(转储[] 字节,ERR 出错)
DumpRequest返回req的和被服务端接收到时一样的有线表示,可选地包括请求的主体,用于调试。本函数在语义上是无操作的,但为了转储请求主体,他会重新引用的数据到内存中,可以请求req.Body修改为指向内存中的副本。req的分配的使用细节请参见http.Request的文档。
func DumpRequestOut
FUNC DumpRequestOut(REQ * HTTP。请求,身体布尔)([] 字节,错误)
DumpRequestOut类似DumpRequest,但会包括标准http.Transport类型添加的头域,如User-Agent。
func DumpResponse
FUNC DumpResponse(分别* HTTP。响应,主体布尔)(转储[] 字节,ERR 出错)
DumpResponse类似DumpRequest,但转储的是一个回复。
func NewChunkedReader
FUNC NewChunkedReader(R io的。阅读器)的IO。读者
NewChunkedReader返回一个io.Reader。返回值的Read方法替换从r读取的采用HTTP“ chunked”传输编码的数据翻译之后返回。当读取到最后的零长chunk时,返回值的Read会返回io .EOF。
NewChunkedReader在正常的应用中是不需要的,http包在读取回复主体时会自动将“ chunked”编码进行解码。
func NewChunkedWriter
FUNC NewChunkedWriter(W IO。作家)IO。写关闭器
NewChunkedWriter返回一个io.Writer。返回值的写入方法插入写入的数据编码为HTTP“块”传输编码格式后再写入w。其关闭方法放入最后的零长chunk写入w,标注数据流的结尾。
正常的应用中不需要NewChunkedWriter,http包会在处理器未设置Content-Length头时主动进行chunked编码。在处理器内部使用本函数会最终导致chunked或者有Content-Length头的chunked,两个都是错误的。
键入ClientConn
输入ClientConn struct { //内含隐藏或非引伸 }
ClientConn类型支持通过Hijack方法劫持下层连接,取回对下层连接的控制权,按照调用者的预期进行。处理该连接。
ClientConn是旧的,低层次的。应用程序应使用net / http包的ClientType和Transport类型代替它。
func NewClientConn
FUNC NewClientConn(C 网,康涅狄格州,R * BUFIO。阅读器)* ClientConn
如果r不是nil,它是从c读取时使用的缓冲。
func NewProxyClientConn
FUNC NewProxyClientConn(C 网,康涅狄格州,R * BUFIO。阅读器)* ClientConn
NewProxyClientConn类似NewClientConn,但使用Request.WriteProxy方法将请求写入c。
func(* ClientConn)待定
func(cc * ClientConn)Pending()int
Pending返回该连接上上已发送但尚未接收到回复的请求的数量。
func(* ClientConn)编写
FUNC(CC * ClientConn)写(REQ * HTTP。请求)(ERR 出错)
如果该连接已经在HTTP keepalive逻辑上关闭了(表示该连接不会再发送新的请求)返回ErrPersistEOF。如果要求关闭设置为真,keepalive连接会在此请求后逻辑上ErrUnexpectedEOF表示立即关闭了下层的TCP连接,这通常被视为优雅的(正常的)关闭。
func(* ClientConn)读取
FUNC(CC * ClientConn)读取(REQ * HTTP。请求)(相应* HTTP。响应,ERR 出错)
读回下一个回复。合法的回复可能会和ErrPersistEOF一起返回,这表示直接要求该请求是最后一个被服务的请求。读可以和写入同时调用,但不能和另一个读同时调用。
func(* ClientConn)做
func(cc * ClientConn)Do(要求 * http。请求)(resp * http。响应,错误错误)
做是一个便利方法,它会发起一个请求,并读取一个回复。(能不能保证两者对应?不知道)
func(* ClientConn)劫持
FUNC(CC * ClientConn)劫持()(C 净。康涅狄格州,R * BUFIO。阅读器)
Hijack拆开ClientConn返回下一层的连接和读取侧的缓冲,其中可能有部分剩余的数据。Hijack可以在调用者自身或者其读取方法发出keepalive逻辑的终止信号之前调用。调用者将其写入或读取。执行过程中调用Hijack。
func(* ClientConn)关闭
func(cc * ClientConn)Close()错误
关闭调用Hijack,然后关闭下层的连接。
键入ServerConn
输入ServerConn struct { //内含隐藏或非引伸 }
ServerConn支持管道。内套,例如,请求可以不和回复的发送同步的读取(但仍按照相同的顺序)。
ServerConn是旧的,低层次的。应用程序应使用net / http包的Server类型代替它。
func NewServerConn
FUNC NewServerConn(C 网,康涅狄格州,R * BUFIO。阅读器)* ServerConn
如果r补位nil,则作为从c读取时的缓冲。NewServerConn返回一个新的从c读写的ServerConn。
func(* ServerConn)待定
func(sc * ServerConn)Pending()int
Pending返回该连接上已已接收到但尚未回复的请求的数量。
func(* ServerConn)读取
FUNC(SC * ServerConn)阅读()(REQ * HTTP。请求,ERR 错误)
读取读取下一个请求。如果它优雅的决定不会再有更多的请求(例如,在HTTP / 1.0连接的第一个请求之后,或者HTTP / 1.1的一个具有“ Connection:close“头的请求之后),会返回ErrPersistEOF。
func(* ServerConn)写入
FUNC(SC * ServerConn)写(REQ * HTTP。请求,RESP * HTTP。响应)错误
写方法应该尝试执行(以回复阻止多的请求),直到写入本身返回错误,而不应考虑读取侧返回的任何错误。
func(* ServerConn)劫持
FUNC(SC * ServerConn)劫持()(C 网,康涅狄格州,R * BUFIO。阅读器)
Hijack拆开ServerConn返回下一层的连接和读取侧的缓冲,其中可能有部分剩余的数据。Hijack可以在调用者本身或者其读取方法发出keepalive逻辑的终止信号之前调用。调用者将其写入或读取。执行过程中调用Hijack。
func(* ServerConn)关闭
func(sc * ServerConn)Close()错误
关闭调用Hijack,然后关闭下层的连接。
类型ReverseProxy
键入反向代理结构{ //董事必须是将请求修改为新的请求的函数。 //修改后的请求会使用运输发送,得到的回复会不经修改的返回给客户端。 导演 FUNC(* HTTP。请求) //交通运输用于执行代理请求。 //如果本字段为无,会使用http.DefaultTransport。 交通运输 HTTP。RoundTripper // FlushInterval指定拷贝回复的主体时将数据刷新到客户端的时间间隔。// 如果本变量为零值,不会进行周期的刷新。(复制完成回复主体后再刷新) FlushInterval 时间。持续时间 }
ReverseProxy是一个HTTP处理器,它接收一个请求,发送给另一个服务端,将回复转发给客户端。
func NewSingleHostReverseProxy
FUNC NewSingleHostReverseProxy(目标* URL。URL)* 反向代理
NewSingleHostReverseProxy返回一个新的ReverseProxy。返回值重定向请求的URL重新为目标参数提供的协议,主机和基路径。如果目标参数的路径转换为“ / base”,接收到请求的URL.Path为“ / dir“,修改后的请求的URL.Path将会是” / base / dir“。
func(* ReverseProxy)ServeHTTP
FUNC(P * 反向代理)ServeHTTP(RW HTTP。ResponseWriter,REQ * HTTP。请求)