RestTemplate的使用
1,直接调用会错,表示没有没定义bean
@Autowired private RestTemplate restTemplate
//会报 Consider defining a bean of type 'org.springframework.web.client.RestTemplate' in your configuration.
2,需要在config注入bean
@LoadBalanced @Bean public RestTemplate loadBalanced1() { return new RestTemplate(); } 这样也会报错,他会在服务注册中心找,找不到实例No instances available for xxx
3,解决办法,
在配置类 */ @Configuration public class RestConfig { @Bean(name = "remoteRestTemplate") public RestTemplate restTemplateRemote() { return new RestTemplate(); } } 在需要调入的 @Autowired @Qualifier(value = "remoteRestTemplate") private RestTemplate rest; 使用方法 //1、构建body参数 JSONObject jsonObject = new JSONObject(); jsonObject.put("UserName",USER_NAME); jsonObject.put("Password",PASS_WORD); //2、添加请求头 HttpHeaders headers = new HttpHeaders(); headers.add("Content-Type","application/json"); //3、组装请求头和参数 HttpEntity<String> formEntity = new HttpEntity<String>(JSON.toJSONString(jsonObject), headers); //4、发起post请求 ResponseEntity<String> stringResponseEntity = null; try { stringResponseEntity = restTemplate.postForEntity(URL, formEntity, String.class); log.info("ResponseEntity----"+stringResponseEntity); } catch (RestClientException e) { e.printStackTrace(); } //5、获取http状态码 int statusCodeValue = stringResponseEntity.getStatusCodeValue(); log.info("httpCode-----"+statusCodeValue); //6、获取返回体 String body = stringResponseEntity.getBody(); log.info("body-----"+body); //7、映射实体类 Wrapper wrapper = JSONObject.parseObject(body, Wrapper.class); String data = wrapper.getData(); log.info("data-----"+data);
4.处理响应参数
//如果响应结果为多层,可以转换为jsonnode
ObjectMaper mapper=new ObjectMapper();
JSONNode jsonnode= mapper.readTree(Stringjson);
jsonNode path=jsonnode.path(“data”).path("records");//可以链式获取多层关系
for(JsonNOde node:path){ //如果path是数组可以for循环
mapper.treeToValue(node,your Class); //可以转换映射到实体类
}
5实体创建映射关系
使用@Jsonproperty("sxxx-xx) 可以做映射关系 private String nama; 在类上加注解@JSONIgnoreProperties(IgnoreUnknown=true) 实体类可以多一些不用对应的属性字段 public class 类名{} 2使用@JSONField注解 @JSONField(name = "Field")
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 无需6万激活码!GitHub神秘组织3小时极速复刻Manus,手把手教你使用OpenManus搭建本
· C#/.NET/.NET Core优秀项目和框架2025年2月简报
· 葡萄城 AI 搜索升级:DeepSeek 加持,客户体验更智能
· 什么是nginx的强缓存和协商缓存
· 一文读懂知识蒸馏