package main
import (
"context"
"fmt"
"log"
"net/http"
"net/http/httptest"
"path/to/httputil"
"time"
)
func main() {
// 创建一个测试服务器
ts := httptest.NewServer(http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) {
if r.Method == "GET" {
w.Write([]byte("Hello, GET!"))
} else if r.Method == "POST" {
w.Write([]byte("Hello, POST!"))
}
}))
defer ts.Close()
ctx := context.Background()
// 测试 GET 请求
resp, err := httputil.Get(ctx, ts.URL, nil)
if err != nil {
log.Fatalf("GET 请求失败: %v", err)
}
body, err := httputil.DealResponse(resp)
if err != nil {
log.Fatalf("读取 GET 响应失败: %v", err)
}
fmt.Printf("GET 响应: %s\n", string(body))
// 测试 POST 请求
resp, err = httputil.Post(ctx, ts.URL, map[string]interface{}{"key": "value"})
if err != nil {
log.Fatalf("POST 请求失败: %v", err)
}
body, err = httputil.DealResponse(resp)
if err != nil {
log.Fatalf("读取 POST 响应失败: %v", err)
}
fmt.Printf("POST 响应: %s\n", string(body))
// 测试带超时的请求
ctx, cancel := context.WithTimeout(context.Background(), 5*time.Second)
defer cancel()
resp, err = httputil.Get(ctx, ts.URL, nil)
if err != nil {
log.Fatalf("带超时的 GET 请求失败: %v", err)
}
body, err = httputil.DealResponse(resp)
if err != nil {
log.Fatalf("读取带超时的 GET 响应失败: %v", err)
}
fmt.Printf("带超时的 GET 响应: %s\n", string(body))
}