HttpClient 调用示例
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 | import com.alibaba.fastjson.JSON; import com.software.boot.common.entity.Response; import lombok.extern.slf4j.Slf4j; import org.apache.commons.lang.time.DateFormatUtils; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Value; import org.springframework.cloud.context.config.annotation.RefreshScope; import org.springframework.http.*; import org.springframework.stereotype.Service; import org.springframework.web.client.RestTemplate; import java.util.*; import java.util.stream.Collectors; @Service @Slf4j @RefreshScope public class TodoServiceImpl implements TodoService { @Autowired RestTemplate restTemplate; @Value ( "${micro.service.RY.service}" ) private String ryUrl; @Value ( "${micro.service.RY.ryBriefs}" ) private String ryBriefs; @Override public Response<?> list(TodoRequest request) { request.setScheduleDate(DateFormatUtils.format( new Date(), "yyyy-MM-dd" )); HttpHeaders headers = new HttpHeaders(); headers.setAccept(Collections.singletonList(MediaType.APPLICATION_JSON)); headers.set( "employeeId" , request.getEmployeeId()); log.info( ">>>> Method:todoList>>Begin request:{}" , request); HttpEntity<String> entity = new HttpEntity<String>( "" , headers); ResponseEntity<YqApiResult> responseEntity = restTemplate.exchange(ryUrl + "/integrate/yq/getSchedule?shopId=" + request.getShopId() + "&userCode=" + request.getEmployeeId(), HttpMethod.GET, entity, YqApiResult. class ); HttpStatus statusCode = responseEntity.getStatusCode(); int code = statusCode.value(); log.info( ">>> " + ryUrl + "/integrate/yq/getSchedule,result http status: {}" , code); YqApiResult body = responseEntity.getBody(); log.info( ">>> /integrate/yq/getSchedule,response body: {}" , body); if (body == null ) { return Response.error(BusinessError.CALL_FAILED); } List<TodoResponse> data = body.getData(); return Response.success(getQuantity(request, data)); } /** * 查询待办数量 * * @param quest * @param data * @return */ private List<TodoResponse> getQuantity(TodoRequest quest, List<TodoResponse> data) { try { if (data == null ) { return data; } List<ScheduleCode> codeList = new ArrayList<>(); data.forEach(item -> { ScheduleCode codeItem = new ScheduleCode(); codeItem.setScheduleCode(item.getScheduleCode()); codeList.add(codeItem); }); TodoIconRequest request = new TodoIconRequest(); request.setData(codeList); request.setShopId(quest.getShopId()); request.setUserCode(quest.getEmployeeId()); request.setScheduleDate(quest.getScheduleDate()); HttpHeaders requestHeaders = new HttpHeaders(); requestHeaders.setContentType(MediaType.APPLICATION_JSON_UTF8); requestHeaders.set( "employeeId" , quest.getEmployeeId()); requestHeaders.set( "token" , quest.getToken()); requestHeaders.set( "innerToken" , ryBriefs); log.info( ">>> Req quantity {},request header {}" , JSON.toJSON(request), requestHeaders); HttpEntity<TodoIconRequest> requestEntity = new HttpEntity<>(request, requestHeaders); ResponseEntity<YqApiQuantityResult> quantityResp = null ; quantityResp = restTemplate.postForEntity(ryUrl + "/schedule/yq/getScheduleQuantity" , requestEntity, YqApiQuantityResult. class ); log.info( ">>> Quantity response,{}" , quantityResp); // YqApiQuantityResult body = JSON.parseObject(JSON.toJSONString(quantityResponse), new TypeReference<YqApiQuantityResult>() { // }); YqApiQuantityResult body = quantityResp.getBody(); if (body == null ) { return data; } List<TodoIconResponse> numData = body.getData(); if (numData != null ) { Map<String, Integer> buMap = numData.stream().collect(Collectors.toMap(TodoIconResponse::getScheduleCode, TodoIconResponse::getQuantity, (key1, key2) -> key1)); //设置角标 for ( int i = 0 ; i < data.size(); i++) { TodoResponse item = data.get(i); Integer num = buMap.getOrDefault(item.getScheduleCode(), 0 ); item.setQuantity(num == null ? 0 : num); data.set(i, item); } } return data; } catch (Exception e) { log.info( ">>> Call Failed {},use default 0" , e.getMessage()); } return data; } } |
标签:
Java
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 记一次.NET内存居高不下排查解决与启示
· 探究高空视频全景AR技术的实现原理
· 理解Rust引用及其生命周期标识(上)
· 浏览器原生「磁吸」效果!Anchor Positioning 锚点定位神器解析
· 没有源码,如何修改代码逻辑?
· 全程不用写代码,我用AI程序员写了一个飞机大战
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· 记一次.NET内存居高不下排查解决与启示
· DeepSeek 开源周回顾「GitHub 热点速览」
· 白话解读 Dapr 1.15:你的「微服务管家」又秀新绝活了