Ingen beskrivning
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

my_send_message_test.go 2.0KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495969798
  1. package test
  2. import (
  3. "bytes"
  4. "encoding/json"
  5. "fmt"
  6. "io"
  7. "net/http"
  8. "testing"
  9. "time"
  10. "git.x2erp.com/qdy/go-base/types"
  11. )
  12. func TestSendMessage(t *testing.T) {
  13. queryRequest := getQueyRequest()
  14. messageRequest := types.MessageRequest{
  15. ChannelName: "v_bdx_channel",
  16. ExchangeName: "v_bdx_exchange",
  17. RoutingKey: "v-bdx.count",
  18. Message: queryRequest,
  19. ContentType: "json",
  20. }
  21. // 2. 将数据转换为JSON
  22. jsonData, err := json.Marshal(messageRequest)
  23. if err != nil {
  24. fmt.Printf("JSON编码失败: %v\n", err)
  25. return
  26. }
  27. // 3. 发送HTTP POST请求
  28. url := "http://localhost:9090/api/rabbitmq/message/send"
  29. POSTMessage(jsonData, url)
  30. }
  31. func getQueyRequest() types.QueryRequest {
  32. sql := `SELECT * FROM (SELECT a.*, ROWNUM rn FROM (SELECT CLOTHING_ID, CLOTHING_NAME FROM X6_STOCK_DEV.A3_CLOTHING ORDER BY CLOTHING_ID) a WHERE ROWNUM <= :1) WHERE rn > :2
  33. `
  34. // // 3个参数
  35. params := []interface{}{
  36. 10,
  37. 0,
  38. }
  39. return types.QueryRequest{
  40. SQL: sql,
  41. PositionalParams: params,
  42. WriterHeader: false,
  43. }
  44. }
  45. func POSTMessage(jsonData []byte, url string) {
  46. // 如果服务端需要认证,添加JWT token
  47. token := "123" // 替换为实际的JWT token
  48. req, err := http.NewRequest("POST", url, bytes.NewBuffer(jsonData))
  49. if err != nil {
  50. fmt.Printf("创建请求失败: %v\n", err)
  51. return
  52. }
  53. // 添加请求头
  54. req.Header.Set("Content-Type", "application/json")
  55. if token != "" {
  56. req.Header.Set("Authorization", "Bearer "+token)
  57. }
  58. // 4. 发送请求并获取响应
  59. client := &http.Client{
  60. Timeout: 10 * time.Second,
  61. }
  62. resp, err := client.Do(req)
  63. if err != nil {
  64. fmt.Printf("请求失败: %v\n", err)
  65. return
  66. }
  67. defer resp.Body.Close()
  68. // 5. 读取响应
  69. body, err := io.ReadAll(resp.Body)
  70. if err != nil {
  71. fmt.Printf("读取响应失败: %v\n", err)
  72. return
  73. }
  74. // 6. 输出结果
  75. fmt.Printf("状态码: %d\n", resp.StatusCode)
  76. fmt.Printf("响应头: %v\n", resp.Header)
  77. fmt.Printf("响应体: %s\n", string(body))
  78. }