💎一站式轻松地调用各大LLM模型接口,支持GPT4、智谱、星火、月之暗面及文生图 广告
[TOC] ## 语法 可追踪的函数 ``` type ClientTrace struct { GetConn func(hostPort string) GotConn func(GotConnInfo) PutIdleConn func(err error) GotFirstResponseByte func() Got100Continue func() DNSStart func(DNSStartInfo) DNSDone func(DNSDoneInfo) ConnectStart func(network, addr string) ConnectDone func(network, addr string, err error) TLSHandshakeStart func() TLSHandshakeDone func(tls.ConnectionState, error) WroteHeaders func() Wait100Continue func() WroteRequest func(WroteRequestInfo) } ``` ## 实例 ### 设置监听函数 ``` req, _ := http.NewRequest("GET", "http://example.com", nil) trace := &httptrace.ClientTrace{ GotConn: func(connInfo httptrace.GotConnInfo) { fmt.Printf("Got Conn: %+v\n", connInfo) }, DNSStart: func(info httptrace.DNSStartInfo) { fmt.Printf("DNSStart %+v\n", info) }, DNSDone: func(dnsInfo httptrace.DNSDoneInfo) { fmt.Printf("DNS Info: %+v\n", dnsInfo) }, ConnectStart: func(network, addr string) { fmt.Printf("connectStart %+v%+v\n", network, addr) }, } req = req.WithContext(httptrace.WithClientTrace(req.Context(), trace)) res, err := http.DefaultClient.Do(req) if err != nil { log.Fatal(err) } fmt.Printf("%+v\n", res.Status) ```