GO语言"net/http/httputil"包中"DumpRequest"函数的用法及代码示例。
用法:
func DumpRequest(req *http.Request, body bool)([]byte, error)
DumpRequest 在其 HTTP/1.x 线路表示中返回给定的请求。它只能由服务器用于调试客户端请求。返回的表示只是一个近似值;初始请求的一些细节在解析为 http.Request 时会丢失。特别是,标头字段名称的顺序和大小写丢失。 multi-valued 标头中的值顺序保持不变。 HTTP/2 请求以 HTTP/1.x 形式转储,而不是其原始二进制表示形式。
如果 body 为真,DumpRequest 也会返回正文。为此,它消耗 req.Body,然后用产生相同字节的新 io ReadCloser 替换它。如果DumpRequest 返回错误,则 req 的状态未定义。
http.Request.Write 的文档详细说明了转储中包含哪些 req 字段。
例子:
package main
import (
"fmt"
"io"
"log"
"net/http"
"net/http/httptest"
"net/http/httputil"
"strings"
)
func main() {
ts := httptest.NewServer(http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) {
dump, err := httputil.DumpRequest(r, true)
if err != nil {
http.Error(w, fmt.Sprint(err), http.StatusInternalServerError)
return
}
fmt.Fprintf(w, "%q", dump)
}))
defer ts.Close()
const body = "Go is a general-purpose language designed with systems programming in mind."
req, err := http.NewRequest("POST", ts.URL, strings.NewReader(body))
if err != nil {
log.Fatal(err)
}
req.Host = "www.example.org"
resp, err := http.DefaultClient.Do(req)
if err != nil {
log.Fatal(err)
}
defer resp.Body.Close()
b, err := io.ReadAll(resp.Body)
if err != nil {
log.Fatal(err)
}
fmt.Printf("%s", b)
}
输出:
"POST / HTTP/1.1\r\nHost: www.example.org\r\nAccept-Encoding: gzip\r\nContent-Length: 75\r\nUser-Agent: Go-http-client/1.1\r\n\r\nGo is a general-purpose language designed with systems programming in mind."
相关用法
- GO DumpRequestOut用法及代码示例
- GO DumpResponse用法及代码示例
- GO Dumper用法及代码示例
- GO Dump用法及代码示例
- GO Duration.Hours用法及代码示例
- GO Duration.Round用法及代码示例
- GO Duration用法及代码示例
- GO Duration.Truncate用法及代码示例
- GO Duration.String用法及代码示例
- GO Duration.Minutes用法及代码示例
- GO Duration.Milliseconds用法及代码示例
- GO Duration.Seconds用法及代码示例
- GO Duration.Microseconds用法及代码示例
- GO Duration.Nanoseconds用法及代码示例
- GO DecodeLastRuneInString用法及代码示例
- GO DB.QueryRowContext用法及代码示例
- GO Date用法及代码示例
- GO DB.ExecContext用法及代码示例
- GO Dial用法及代码示例
- GO DB.BeginTx用法及代码示例
注:本文由纯净天空筛选整理自golang.google.cn大神的英文原创作品 DumpRequest。非经特殊声明,原始代码版权归原作者所有,本译文未经允许或授权,请勿转载或复制。