如何在IntelliJ中调试WebClient转换前的原始响应内容
在IntelliJ中调试WebClient原始响应内容的方法
你可以通过两种方式查看WebClient转换为Mono<Response>之前的原始响应:
方法一:临时修改代码,显式获取原始响应
把原代码中的retrieve().bodyToMono(Response.class)替换为exchangeToMono,先拿到包含原始响应的ClientResponse对象,再设置断点调试:
public Mono<Response> sendFile(final MultipartFile multipartFile) { Mono<Response> response = webClient.post() .uri(new URI("someurl")) .body(BodyInserters.fromMultipartData(multiValueMap)) .exchangeToMono(clientResponse -> { // 在此行设置断点(点击行号旁空白区域) return clientResponse.bodyToMono(Response.class); }); return response; }
调试操作:
- 启动项目的调试模式(点击IntelliJ右上角的虫子图标)
- 触发
sendFile方法,代码停在断点处后,在Debug面板中查看clientResponse对象,能看到响应头、状态码等信息 - 按下
Alt+F8打开Evaluate Expression窗口,输入clientResponse.bodyToMono(String.class).block(),执行后就能拿到原始的字符串格式响应体(调试时用block()没问题,正式代码别留)
方法二:不修改代码,跟踪WebClient内部逻辑
如果不想改代码,可以直接在WebClient的内部处理方法上打断点:
- 按住
Ctrl点击代码中的bodyToMono方法,跳转到它的实现类(通常是DefaultResponseSpec) - 在
bodyToMono方法的代码行上设置断点 - 启动调试,当代码走到这个断点时,查看方法内的
clientResponse变量,同样可以用Evaluate Expression获取原始响应体
内容的提问来源于stack exchange,提问作者user21476047
相关产品推荐
相关产品推荐

