Hello! 欢迎来到小浪资源网!


curl请求图片接口后端报错“java.io.IOException: 你的主机中的软件中止了一个已建立的连接”该如何解决?


curl请求图片接口后端报错“java.io.IOException: 你的主机中的软件中止了一个已建立的连接”该如何解决?

如何解决 cURL 请求图片接口后端报错

当通过 curl 请求图片接口时,后端可能抛出错误消息:”Java.io.ioexception: 你的主机中的软件中止了一个已建立的连接”。这通常是因为 curl 未选择接受图像文件。

解决方法

  1. 检查 curl 设置:确保 curl 已正确配置为接受响应文件。使用 -o 或 –output 选项指定保存图像文件的路径。
  2. 过滤请求:在后端代码中,检查请求头中是否存在 “curl” 关键字。如果是,则返回 json 响应,表示不支持该请求。

以下是 java 代码示例:

立即学习Java免费学习笔记(深入)”;

import javax.servlet.*; import javax.servlet.http.*; import java.io.*;  public class imageservlet extends httpservlet {      @override     protected void doget(httpservletrequest req, httpservletresponse resp) throws servletexception, ioexception {         if (req.getheader("user-agent").contains("curl")) {             resp.setstatus(400);             resp.getwriter().write("{"error": "this request is not supported by curl"}");             return;         }                  // 正常处理图片响应...     } }

其他信息:

  • curl 请求命令:curl http://127.0.0.1:8080/3862f6ea2fe849d8b922dc135556a4c4
  • 后端响应配置:
response.reset(); response.setCharacterEncoding(StandardCharsets.UTF_8.toString()); response.setContentLengthLong(photoEntity.getSize()); response.setContentType(photoEntity.getType()); response.setHeader("Content-Disposition", "inline;filename=" + URLEncoder.encode(uuid, StandardCharsets.UTF_8));

相关阅读