java - 以 JSON 格式保存 API 返回的图像
问题描述
我正在使用Meme 生成器 API。我的目标是使用 API 生成模因,能够查看并将它们保存为 JPG 图像。
当我尝试使用创建者提供的 Java 代码时,我收到一条错误消息。
这是提供的失败代码:
HttpResponse<JsonNode> response = Unirest.get("https://ronreiter-meme-generator.p.rapidapi.com/meme?font=Impact&font_size=50&meme=Condescending-Wonka&top=Yolo&bottom=HA")
.header("X-RapidAPI-Key", "TOP_SECRET")
.asJson();
错误信息:
org.springframework.beans.factory.UnsatisfiedDependencyException:创建文件 [C:\yaml\out\production\classes\com\example\demo\controllers\APIController.class] 中定义的名称为“APIController”的 bean 时出错:通过不满足的依赖关系表示构造函数参数 0;嵌套异常是 org.springframework.beans.factory.BeanCreationException:创建文件 [C:\yaml\out\production\classes\com\example\demo\services\APIService.class] 中定义的名称为“APIService”的 bean 时出错:实例化bean 失败;嵌套异常是 org.springframework.beans.BeanInstantiationException:无法实例化 [com.example.demo.services.APIService]:构造函数抛出异常;嵌套异常是 com.mashape.unirest.http.exceptions.UnirestException: java.lang.RuntimeException: java.lang.RuntimeException:
它说领域
response
无法解析为 JSONArray,因此我尝试了以下代码片段:
HttpResponse<String> meme = Unirest.get("https://ronreiter-meme-generator.p.rapidapi.com/meme?font=Impact&font_size=50&meme=Impossibru-Guy-Original&top=Random+meme&bottom=Bottom+text")
.header("X-RapidAPI-Key", "TOP_SECRET")
.asString();
在这种情况下,代码运行,但是当我调用端点时,我得到了很多
无名氏
字符串中的片段,这基本上意味着我正在尝试读取在 Unicode 中没有表示的代码。我在这里看到了一个解决方案,我可以如何处理这个问题,但我不太确定我是否走在正确的道路上。
根据提供 API 的网站,我应该得到这样的响应:
你能给我一些建议如何解决这个问题吗?
提前感谢您的帮助。
解决方案
API 规范的内容类型包含“image/jpeg”。这意味着响应中不包含 JSON,而是二进制图像数据,因此尝试将其解析为 JSON 将导致失败。
尝试将 API 的响应直接保存到文件中,您会看到它是一个图像。
推荐阅读
- javascript - 如何修复数据表搜索框和分页正确?
- c++ - 无锁单生产者/单消费者循环缓冲区 - CPU 推测能否打破内存屏障逻辑?
- javascript - 如何将函数参数传递给外部函数?
- android - Cordova Vue 在键盘可见时启用滚动视图
- matlab - 两个图由不需要的线连接 - 动画线
- c++ - 将未知数据库文件从 Windows 软件转换为 MySqli 数据库
- regex - 正则表达式非重复二元组
- javascript - 如果到应用程序的深层链接有效,则停止 window.location
- node.js - 当似乎没有其他应用程序试图使用该端口时,如何修复 Node.js 中的“events.js:167 错误错误:连接 ECONNREFUSED 127.0.0.1:443”?
- javascript - 使用 graphql 模式语言的嵌套查询