go http Client net/http

📅 2026/7/14 14:27:23 👁️ 阅读次数 📝 编程学习
go http Client net/http

框架推荐

net/http

go的内置http工具,可以构建client和server。

@Slf4j @Controller @RequestMapping("/rest") public class RestTestController { @GetMapping("/get") @ResponseBody public String get(@RequestBody SSHConnectParam param) throws Exception { log.info(JsonUtil.beanToJson(param)); return JsonUtil.beanToJson(param); } @PostMapping("/post") @ResponseBody public String post(@RequestBody SSHConnectParam param) throws Exception { log.info(JsonUtil.beanToJson(param)); return JsonUtil.beanToJson(param); } } @Data @AllArgsConstructor @NoArgsConstructor public class SSHConnectParam { private String ip; private int port; private String username; private String password; } -- get方法: import ( "io" "io/ioutil" "log" "net/http" "strings" ) // Get 用net http实现一个 可以body json格式的GET方法 func Get(c *http.Client, url string, body io.Reader) (resp *http.Response, err error) { req, err := http.NewRequest("GET", url, body) if err != nil { return nil, err } req.Header.Set("Content-Type", "application/json") return c.Do(req) } func main() { log.Println("main ...") // 简单的get方法 //resp, err := http.Get("http://localhost:8081/rest/get") // 用自定义的GET方法 // requestBody:strings.NewReader 传json resp, err := Get(http.DefaultClient, "http://localhost:8081/rest/get", strings.NewReader("{\"ip\":\"11111111\",\"password\":\"2222\",\"port\":0,\"username\":\"4444\"}")) if err != nil { log.Fatalln("get error", err.Error()) } // 完事关闭response的body defer resp.Body.Close() // 打印header中数据 log.Println("response headers:", resp.Header) log.Println("response status:", resp.StatusCode) // 读取body中的数据 body, err := ioutil.ReadAll(resp.Body) if err != nil { log.Fatalln("read response body error", err.Error()) } // 打压body,将二进制的body转换为string log.Println(string(body)) log.Println("success ...") } -- POST方法: import ( "io/ioutil" "log" "net/http" "strings" ) func main() { log.Println("main ...") resp, err := http.Post("http://localhost:8081/rest/post", "application/json", strings.NewReader("{\"ip\":\"11111111\",\"password\":\"2222\",\"port\":0,\"username\":\"4444\"}")) if err != nil { log.Fatalln("post error", err.Error()) } log.Println("response headers:", resp.Header) log.Println("response status code:", resp.StatusCode) body, err := ioutil.ReadAll(resp.Body) if err != nil { log.Fatalln("parse body error", err.Error()) } log.Println("response body:", string(body)) log.Println("success ...") }