package httputil

import "net/http/httputil"

httputil包提供了HTTP公共函数,是对net / http包的更常见函数的补充。

指数

返回首页

变数

VAR(
     ErrPersistEOF =&HTTPProtocolError {Errorstring,则: “持续连接关闭”}
     ErrClosed      =&HTTPProtocolError {Errorstring,则: “连接由用户关闭”}
     ErrPipeline    =&HTTPProtocolError {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。
    交通运输 HTTPRoundTripper 
    // FlushInterval指定拷贝回复的主体时将数据刷新到客户端的时间间隔。// 
    如果本变量为零值,不会进行周期的刷新。(复制完成回复主体后再刷新)
    FlushInterval  时间持续时间 
}

ReverseProxy是一个HTTP处理器,它接收一个请求,发送给另一个服务端,将回复转发给客户端。

func NewSingleHostReverseProxy

FUNC NewSingleHostReverseProxy(目标* URLURL)* 反向代理

NewSingleHostReverseProxy返回一个新的ReverseProxy。返回值重定向请求的URL重新为目标参数提供的协议,主机和基路径。如果目标参数的路径转换为“ / base”,接收到请求的URL.Path为“ / dir“,修改后的请求的URL.Path将会是” / base / dir“。

func(* ReverseProxy)ServeHTTP

FUNC(P * 反向代理)ServeHTTP(RW HTTPResponseWriter,REQ * HTTP请求
原文地址:https://www.cnblogs.com/show58/p/12652202.html