You need to enable JavaScript to run this app. Micronaut HttpClient调用exchange方法返回body始终为null问题
优惠活动
大模型
产品
解决方案
定价
更多

Micronaut HttpClient调用exchange方法返回body始终为null问题

问题原因

这不是框架Bug,属于API使用方法的问题,原因如下:

  • Micronaut低层级HttpClient提供的单参数exchange(HttpRequest)重载方法,设计上默认仅返回响应元数据(状态码、响应头),不会消费、反序列化响应体内容,因此返回的HttpResponse中body为null。该设计是为了适配仅需要校验响应状态、头信息的场景,减少不必要的序列化开销。
  • 你测试中使用的retrieve方法默认会将响应体反序列化为String类型,因此对应测试可以正常拿到返回内容。
  • 你定义变量时声明的HttpResponse<String>泛型信息会在Java运行时被类型擦除,框架无法通过泛型推导你期望的响应体类型,因此必须显式传入类型参数告知框架。

正确用法

调用exchange方法时传入第二个参数指定响应体的类型即可,示例如下:

HttpResponse<String> response = client.toBlocking()
        .exchange(HttpRequest.GET("/2").accept(MediaType.TEXT_PLAIN), String.class);

内容的提问来源于stack exchange,提问作者twobiers

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.19 15:15:04