package httpx import ( "bytes" "encoding/json" "errors" "io" "net/http" "time" ) func SendPost(_header http.Header, _url string, _post interface{}) ([]byte, error) { bytesData, err := json.Marshal(_post) if err != nil { return nil, err } req, err := http.NewRequest("POST", _url, bytes.NewBuffer(bytesData)) if err != nil { return nil, err } req.Header.Set("Content-Type", "application/json;charset=UTF-8") for k, v := range _header { if len(v) > 0 { req.Header.Set(k, v[0]) } } client := &http.Client{Timeout: 20 * time.Second} resp, err := client.Do(req) if err != nil { return nil, err } defer resp.Body.Close() respBytes, err := io.ReadAll(resp.Body) if err != nil { return nil, err } return respBytes, nil } func SendPostAndParseJson(url string, post, response interface{}) (err error) { if response == nil { return errors.New("response is not set") } respBytes, err := SendPost(http.Header{}, url, post) if err != nil { return err } return json.Unmarshal(respBytes, &response) }