代码拉取完成,页面将自动刷新
package pkg
import (
"context"
"gitee.com/ltotal/traces/sky"
"github.com/SkyAPM/go2sky"
"io"
"net/http"
agentV3 "skywalking.apache.org/repo/goapi/collect/language/agent/v3"
"strconv"
"time"
)
type HttpPkg struct {
}
var Http = &HttpPkg{}
func (p *HttpPkg) Get(c context.Context, link string, timeout int, header map[string]string) (string, error) {
client := http.Client{Timeout: time.Second * time.Duration(timeout)}
var req *http.Request
req, err := http.NewRequest("GET", link, nil)
if err != nil {
return "", err
}
span, err := Tracer.CreateExitSpan(c, ExitSpanOptions{
OperationName: req.URL.Scheme + "://" + req.URL.Host + req.URL.Path,
Component: sky.ComponentIDGINHttpServer,
Peer: req.URL.Host,
Layer: agentV3.SpanLayer_Http,
Injector: func(key, value string) error {
req.Header.Set(key, value)
return nil
},
})
if err == nil {
defer span.End()
}
Tracer.SpanTag(span, go2sky.TagHTTPMethod, req.Method)
Tracer.SpanTag(span, go2sky.TagURL, link)
if header != nil && len(header) > 0 {
for key, value := range header {
req.Header.Add(key, value)
}
}
resp, err := client.Do(req)
if err != nil {
Tracer.SpanErr(span, err.Error())
return "", err
} else {
Tracer.SpanTag(span, go2sky.TagStatusCode, strconv.Itoa(resp.StatusCode))
}
body, _ := io.ReadAll(resp.Body)
_ = resp.Body.Close()
return string(body), nil
}
func (p *HttpPkg) Post(c context.Context, link string, requestBody io.Reader, timeout int, header map[string]string) (string, error) {
client := http.Client{Timeout: time.Second * time.Duration(timeout)}
var req *http.Request
req, err := http.NewRequest("POST", link, requestBody)
if err != nil {
return "", err
}
span, err := Tracer.CreateExitSpan(c, ExitSpanOptions{
OperationName: req.URL.Scheme + "://" + req.URL.Host + req.URL.Path,
Component: sky.ComponentIDGINHttpServer,
Peer: req.URL.Host,
Layer: agentV3.SpanLayer_Http,
Injector: func(key, value string) error {
req.Header.Set(key, value)
return nil
},
})
if err == nil {
defer span.End()
}
Tracer.SpanTag(span, go2sky.TagHTTPMethod, req.Method)
Tracer.SpanTag(span, go2sky.TagURL, link)
if header != nil && len(header) > 0 {
for key, value := range header {
req.Header.Add(key, value)
}
}
resp, err := client.Do(req)
if err != nil {
Tracer.SpanErr(span, err.Error())
return "", err
} else {
Tracer.SpanTag(span, go2sky.TagStatusCode, strconv.Itoa(resp.StatusCode))
}
body, _ := io.ReadAll(resp.Body)
_ = resp.Body.Close()
return string(body), nil
}
此处可能存在不合适展示的内容,页面不予展示。您可通过相关编辑功能自查并修改。
如您确认内容无涉及 不当用语 / 纯广告导流 / 暴力 / 低俗色情 / 侵权 / 盗版 / 虚假 / 无价值内容或违法国家有关法律法规的内容,可点击提交进行申诉,我们将尽快为您处理。