
org.swiftboot.rpc.ConsumerErrorDecoder Maven / Gradle / Ivy
The newest version!
package org.swiftboot.rpc;
import com.fasterxml.jackson.databind.ObjectMapper;
import feign.Response;
import feign.codec.ErrorDecoder;
import org.springframework.stereotype.Component;
import org.swiftboot.util.IoUtils;
import org.swiftboot.web.exception.ErrMessageException;
import org.swiftboot.web.exception.ErrorCodeSupport;
import java.io.IOException;
import java.util.List;
import java.util.Map;
/**
* 转换服务提供者因异常返回的错误信息为通用的异常,下一步由 ExceptionProcessor 处理转换后的异常。
* 依赖于 hibernate-validator 框架
*
* @author swiftech 2019-02-14
* @see org.swiftboot.web.exception.ExceptionProcessor
**/
@Component
public class ConsumerErrorDecoder implements ErrorDecoder {
private final ObjectMapper objectMapper = new ObjectMapper();
@Override
public Exception decode(String methodKey, Response response) {
System.out.printf("调用服务:%s 发生异常: HTTP %s%n", methodKey, response.status());
try {
String body = IoUtils.readAllToString(response.body().asInputStream());
System.out.println(" 异常内容" + body);
Map mapResp = objectMapper.readValue(body.getBytes(), Map.class);
StringBuilder msgBuf = new StringBuilder();
if (mapResp != null) {
List
© 2015 - 2025 Weber Informatics LLC | Privacy Policy