java - 如何在 Spring Boot 中使用 WebClient 使用二进制和字符串响应?
问题描述
我需要使用供应商 API,它在请求成功时以二进制格式返回文件(.pdf/.jpg/.png),而在请求失败时返回 JSON 响应。Request 方法是 POST 类型的。
我尝试使用以下代码:
WebClient webClient = WebClient.create();
ResponseEntity<Object> apiResponse = webClient.post()
.uri(new URI("https://api.myapp.in/getDocument"))
.header("mobile", "XXXXXXXXX8")
.contentType(MediaType.APPLICATION_FORM_URLENCODED)
//.accept(MediaType.parseMediaType("application/pdf"))
.body(BodyInserters.fromFormData(map))
.retrieve()
.toEntity(Object.class)
.block();
当我执行上面的代码时,它工作正常,并且我能够获得错误情况的 JSON 响应,但是当请求成功时,它会给出如下错误:
Content type 'application/pdf' not supported for bodyType=java.lang.Object
解决方案
一旦你得到回应,你就可以ResponseEntity.getHeaders()
。
从响应标头中,您可以获取内容类型并相应地使用您的响应。如果 API 没有根据响应返回有效的内容类型,您可以在 API 提供者上提出缺陷。
推荐阅读
- exe - 是否可以修改 EXE 以要求以管理员身份运行?
- cmake - 现代 CMake target_include_directories 包括别名
- sql - Sql脚本通过从文件中获取值来搜索数据库列中的值
- sql - 在 Delphi 10.3 上的 SQL 中使用参数的 Noobie 问题
- javascript - 使用 Ajax 从 Springboot 控制器下载多部分文件
- react-native - 如何在 React Native 中使用 pollyjs?
- android - 如何在不使用富文本重写的情况下将 Microsoft Word 文件内容嵌入到 Flutter 应用程序中
- lua - 尝试将数字与 nil 进行比较
- git - 如何使用 pip 从 git 存储库的子目录安装 Python 项目?
- ios - 在我的 IOS 框架中使用 dylib 在 App lauch 后出现错误