package test import ( "bytes" "encoding/json" "fmt" "io" "net/http" "testing" "time" "git.x2erp.com/qdy/go-base/types" ) func TestSendMessage(t *testing.T) { queryRequest := getQueyRequest() messageRequest := types.MessageRequest{ ChannelName: "v_bdx_channel", ExchangeName: "v_bdx_exchange", RoutingKey: "v-bdx.count", Message: queryRequest, ContentType: "json", } // 2. 将数据转换为JSON jsonData, err := json.Marshal(messageRequest) if err != nil { fmt.Printf("JSON编码失败: %v\n", err) return } // 3. 发送HTTP POST请求 url := "http://localhost:9090/api/rabbitmq/message/send" POSTMessage(jsonData, url) } func getQueyRequest() types.QueryRequest { 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 ` // // 3个参数 params := []interface{}{ 10, 0, } return types.QueryRequest{ SQL: sql, PositionalParams: params, WriterHeader: false, } } func POSTMessage(jsonData []byte, url string) { // 如果服务端需要认证,添加JWT token token := "123" // 替换为实际的JWT token req, err := http.NewRequest("POST", url, bytes.NewBuffer(jsonData)) if err != nil { fmt.Printf("创建请求失败: %v\n", err) return } // 添加请求头 req.Header.Set("Content-Type", "application/json") if token != "" { req.Header.Set("Authorization", "Bearer "+token) } // 4. 发送请求并获取响应 client := &http.Client{ Timeout: 10 * time.Second, } resp, err := client.Do(req) if err != nil { fmt.Printf("请求失败: %v\n", err) return } defer resp.Body.Close() // 5. 读取响应 body, err := io.ReadAll(resp.Body) if err != nil { fmt.Printf("读取响应失败: %v\n", err) return } // 6. 输出结果 fmt.Printf("状态码: %d\n", resp.StatusCode) fmt.Printf("响应头: %v\n", resp.Header) fmt.Printf("响应体: %s\n", string(body)) }