feign接口调用报错:feign login request token: null

产生原因:调用中涉及到的实体类字段过多。

解决办法:添加配置

feign:
 compression:
   request:
     enabled: false
   response:
     enabled: false

个人学习踩坑记录...

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
根据代码1“@FeignClient(name = "UserUgsApi", url = "${newbim.login-domain}") public interface IApplicationServicePlatformClient {@PostMapping("/ums/v1/feign/omp/project/search") ResultWrapper<QueryAllProject> listUserProject(@RequestHeader("BSP_TOKEN") String bspToken, @RequestHeader("BSP_USER_ID") String bspUserId, @RequestHeader("BSP_USER_ENV_ID") String bspUserEnvId, @RequestHeader("BSP_USER_TENANT") String bspUserTenant, @RequestBody ProjectCondition queryProjectDto);” 代码2"@Component @Slf4j public class ApplicationServicePlatformClientProxy { @Autowired private IApplicationServicePlatformClient applicationServicePlatformClient; public QueryAllProject listUserProject(String appId, String companyId, String designStatusList, String pageSize, ProjectCondition userId) { ResultWrapper<QueryAllProject> result = null; try { result = applicationServicePlatformClient.listUserProject(appId, companyId, designStatusList, pageSize, userId); } catch (Exception e) { log.error("调用IApplicationServicePlatformClient获取项目名称失败:", e); throw new BimdcException("调用IApplicationServicePlatformClient获取项目名称失败"); } if (result == null || result.getData() == null) { log.error("调用IApplicationServicePlatformClient获取项目名称失败:result={}", result); throw new BimdcException("调用IApplicationServicePlatformClient获取项目名称失败"); } return result.getData(); } }",修改并优化下面代码:@Override public List<ProjectCountVO> projectCount(String beginTime, String endTime, Integer forceType, String projectId) { List<TaskTask> taskTaskList = this.listStatisticsTask(beginTime, endTime, forceType, projectId); if(CollectionUtil.isEmpty(taskTaskList)){ return Collections.emptyList(); } List<ProjectCountVO> result = new ArrayList<>(); Map<String, List<TaskTask>> projectTaskMap = taskTaskList.stream().collect(Collectors.groupingBy(TaskTask::getProjectId)); for (Map.Entry<String, List<TaskTask>> projectTaskEntry : projectTaskMap.entrySet()) { projectId = projectTaskEntry.getKey(); ProjectCountVO projectCountVO = new ProjectCountVO();
05-24
@Override public List<ProjectCountVO> projectCount(String beginTime, String endTime, Integer forceType, String projectId) { List<TaskTask> taskTaskList = this.listStatisticsTask(beginTime, endTime, forceType, projectId); if (CollectionUtil.isEmpty(taskTaskList)) { return Collections.emptyList(); } List<ProjectCountVO> result = new ArrayList<>(); Map<String, List<TaskTask>> projectTaskMap = taskTaskList.stream().collect(Collectors.groupingBy(TaskTask::getProjectId)); IApplicationServicePlatformClient applicationServicePlatformClient = Feign.builder() .encoder(new JacksonEncoder()) .decoder(new JacksonDecoder()) .target(IApplicationServicePlatformClient.class, "http://localhost:8080"); for (Map.Entry<String, List<TaskTask>> projectTaskEntry : projectTaskMap.entrySet()) { projectId = projectTaskEntry.getKey(); ProjectCountVO projectCountVO = new ProjectCountVO(); ResultWrapper<QueryAllProject> queryAllProjectResultWrapper = null; try { queryAllProjectResultWrapper = applicationServicePlatformClient.listUserProject("BSP_TOKEN", "BSP_USER_ID", "BSP_USER_ENV_ID", "BSP_USER_TENANT", new ProjectCondition(projectId)); } catch (Exception e) { log.error("调用IApplicationServicePlatformClient获取项目名称失败:", e); throw new BimdcException("调用IApplicationServicePlatformClient获取项目名称失败"); } if (queryAllProjectResultWrapper == null || queryAllProjectResultWrapper.getData() == null) { log.error("调用IApplicationServicePlatformClient获取项目名称失败:result={}", queryAllProjectResultWrapper); throw new BimdcException("调用IApplicationServicePlatformClient获取项目名称失败"); } QueryAllProject queryAllProject = queryAllProjectResultWrapper.getData(); if (queryAllProject == null) { log.error("调用IApplicationServicePlatformClient获取项目名称失败:result={}", queryAllProjectResultWrapper); throw new BimdcException("调用IApplicationServicePlatformClient获取项目名称失败"); } String projectName = queryAllProject.getProjectName(); projectCountVO.setProjectName(projectName); projectCountVO.setProjectId(projectId); Integer totalCount = projectTaskEntry.getValue().size(); Integer finishCount = (int) projectTaskEntry.getValue().stream().filter(task -> task.getTaskStatus() == TaskStatusEnum.FINISH.getStatus()).count(); projectCountVO.setTotalCount(totalCount); projectCountVO.setFinishCount(finishCount); projectCountVO.setUnFinishCount(totalCount - finishCount); result.add(projectCountVO); } return result; } ``` 在代码中,我使用了Feign调用远程服务,获取项目名称。具体实现是在for循环中,对于每个项目,都调用一次远程服务获取项目名称。注意,这里的远程服务地址我写的是http://localhost:8080,需要根据实际情况进行修改。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值