sendPost.go 1.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051
  1. package sendPost
  2. import (
  3. "bytes"
  4. "encoding/json"
  5. "errors"
  6. "fmt"
  7. "github.com/tidwall/gjson"
  8. "io"
  9. "net/http"
  10. "strings"
  11. )
  12. func SendPostRequest(urls string, payload interface{}) ([]byte, error) {
  13. // 将 payload 转换为 JSON 字符串
  14. marshal, err := json.Marshal(payload)
  15. if err != nil {
  16. return nil, errors.New("参数解析失败")
  17. }
  18. // 创建 POST 请求
  19. req, err := http.NewRequest("POST", urls, bytes.NewBuffer(marshal))
  20. if err != nil {
  21. return nil, errors.New("设置请求参数失败")
  22. }
  23. req.Header.Set("Content-Type", "application/json")
  24. // 发送请求
  25. client := &http.Client{}
  26. resp, err := client.Do(req)
  27. if err != nil {
  28. return nil, errors.New("发送请求失败")
  29. }
  30. defer resp.Body.Close()
  31. // 读取响应体
  32. all, err := io.ReadAll(resp.Body)
  33. if err != nil {
  34. return nil, errors.New("读取响应体失败")
  35. }
  36. // 打印原始响应体
  37. fmt.Println("原始响应体:", string(all))
  38. // 检查响应码
  39. code := gjson.Get(string(all), "code").String()
  40. if !strings.EqualFold(code, "0000") {
  41. return nil, fmt.Errorf("响应码不是 0000")
  42. }
  43. return all, nil
  44. }