公司动态
go http Client net/http
框架推荐net/httpgo的内置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方法 // requestBodystrings.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 ...) }