首页 > 解决方案 > 以 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 的网站,我应该得到这样的响应:

在此处输入图像描述

你能给我一些建议如何解决这个问题吗?

提前感谢您的帮助。

标签: javaspringspring-bootjpeghttpresponse

解决方案


API 规范的内容类型包含“image/jpeg”。这意味着响应中不包含 JSON,而是二进制图像数据,因此尝试将其解析为 JSON 将导致失败。

尝试将 API 的响应直接保存到文件中,您会看到它是一个图像。


推荐阅读