新建一个RestTemplate的配置类,如下:
- /**
- * RestTemplate配置项
- */
- @Configuration
- public class RestTemplateConfig {
-
- @Bean
- public RestTemplate restTemplate() {
- return new RestTemplate();
- }
-
- }
在controller中引入RestTemplate,如下:
- @RestController
- public class LoginController {
-
-
- @Resource
- private RestTemplate restTemplate;
-
- }
代码如下(要注意get参数的位置是从1开始的,而非0):
- @RestController
- public class LoginController {
-
- @Resource
- private RestTemplate restTemplate;
-
- @PostMapping("/login")
- public Result login(@RequestBody @Validated LoginDto dto) {
-
- // 请求地址及参数
- String url = "https://api.gumengya.com/Api/IP?format={1}&ip={2}";
- String format = "json";
- String ip = "113.24.172.71";
-
- // 请求拼接并执行
- ResponseEntity
result = restTemplate.getForEntity(url, String.class, format, ip); -
- // 输出返回的响应状态、响应体、响应头
- System.out.println(result.getStatusCode());
- System.out.println(result.getBody());
- System.out.println(result.getHeaders());
-
- // 响应体为String格式,需要转换为json格式
- JSONObject jsonObject = JSON.parseObject(result.getBody());
-
- // 多层抽取某个指定层级的内容
- jsonObject = jsonObject.getJSONObject("data");
- jsonObject = jsonObject.getJSONObject("location");
- String area = jsonObject.getString("area");
- System.out.println("该ip的属地为:" + area);
-
- return Result.success(200, "登录成功", area);
- }
- }
效果如下:


代码上与GET接口基本一致,只需要修改参数部分,以及将restTemplate.getForEntity换成restTemplate.postForEntity即可,如下:
- // 请求地址及参数
- String url = "https://api.gumengya.com/Api/IP";
-
- Map
params = new HashMap(); - params.put("format", "json");
- params.put("ip", "113.24.172.71");
-
- // 请求拼接并执行
- ResponseEntity
result = restTemplate.postForEntity(url, params, String.class);