生产笔记
2025/8/27小于 1 分钟
生产笔记
feign 发送请求的地方记录
添加编解码
发送请求的地方记录
直接再转换的地方打个断点,可以直接处理原始的流。
发送请求的组件: SynchronousMethodHandler
逻辑
入口:feign.SynchronousMethodHandler#invoke
发送请求: 执行发送请求和编码转换: feign.SynchronousMethodHandler#executeAndDecode
所以,直接给这里打断点就可以
Object executeAndDecode(RequestTemplate template, Options options) throws Throwable {
// 1. 获取request对象
Request request = targetRequest(template);
Response response;
long start = System.nanoTime();
try {
// 执行http 请求
response = client.execute(request, options);
// 再这里执行逻辑就行,可以查看返回值:StreamUtils.copyToString(response.body().asInputStream(), Charset.defaultCharset())
response = response.toBuilder()
.request(request)
.requestTemplate(template)
.build();
} catch (IOException e) {
throw errorExecuting(request, e);
}
long elapsedTime = TimeUnit.NANOSECONDS.toMillis(System.nanoTime() - start);
// 解码
if (decoder != null)
return decoder.decode(response, metadata.returnType());
}
添加编解码
want .