当前位置: 首页 > 知识库问答 >
问题:

从套接字读取HTTP映像响应

饶德本
2023-03-14

我想从socket读取图像响应,并再次将其传递给另一个socket。但现在我连图像反应都看不懂。

BufferedImage image = ImageIO.read(socket.getInputStream())
ByteArrayInputStream bais = new ByteArrayInputStream(inputStreamcontent.getBytes());
BufferedImage image = ImageIO.read(bais);
ImageIO.write(image, "JPG", otherSocket.getOutputStream();
Exception in thread "pool-1-thread-1" java.lang.IllegalArgumentException: image == null!
at java.desktop/javax.imageio.ImageTypeSpecifier.createFromRenderedImage(ImageTypeSpecifier.java:925)
at java.desktop/javax.imageio.ImageIO.getWriter(ImageIO.java:1608)
at java.desktop/javax.imageio.ImageIO.write(ImageIO.java:1594)
at org.sarabit.server.Response.getCompleteResponse(Response.java:64)
at org.sarabit.server.RequestHandler.getResponse(RequestHandler.java:61)
at org.sarabit.server.RequestHandler.handle(RequestHandler.java:37)
at org.sarabit.server.RequestHandler.run(RequestHandler.java:79)
at java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1130)
at java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:630)
at java.base/java.lang.Thread.run(Thread.java:832)

共有1个答案

孟宏才
2023-03-14

为此,您应该使用java.net.url.OpenStream

try (InputStream is = new URL("https://picsum.photos/200/300").openStream()) {
    BufferedImage image = ImageIO.read(is);
    System.out.println(String.format("%d, %d", image.getWidth(), image.getHeight()));
}

如果您使用的是Java>=11,还可以查看Java.net.http.httpclient

 类似资料:
  • socket_read和socket_recv之间有什么区别?我正在尝试使用PHP套接字,但使用socket_read时收到了以下警告: 请帮帮我!

  • 问题内容: 我有一个侦听某些x端口的套接字。 我可以从客户端应用程序将数据发送到套接字,但是无法从服务器套接字获得任何响应。 ..此代码部分从服务器读取数据。 但是,直到关闭服务器上的套接字,我才能从服务器读取任何内容。服务器代码不受我控制,无法对其进行编辑。 如何从客户端代码中克服这个问题。 谢谢 问题答案: 为了在客户端和服务器之间进行通信,必须明确定义协议。 客户端代码将阻塞,直到从服务器收

  • 问题内容: 这就是我到目前为止 我的代码存在问题,返回null。 当我打印对象的内容时,我得到的是标题部分 后面跟着一个空行以及许多带有不同字符的行,例如。 再次我的问题是函数返回null。 提前致谢。 问题答案: 为什么不想使用简单的HTTP URL从主机获取图像?我的意思是: 如果要使用普通套接字,则必须解析http响应并手动从http答复中提取数据:读/跳过标头,读取二进制数据并将其传递给(

  • 问题内容: 我目前正在尝试使用boost-asio的套接字API通过网络将一些JSON数据从客户端传输到服务器。我的客户基本上是这样做的: 在服务器端,我可以选择各种功能。我想使用JsonCpp解析接收到的数据。在研究JsonCpp API(http://jsoncpp.sourceforge.net/class_json_1_1_reader.html)时,我发现Reader可以在char数组或

  • 我正在创建一个简单的服务器/客户端UDP套接字程序,我遇到了一个问题。 问题是recvfrom()函数一直在重新读取上次发送的数据。 因此,如果我从客户端向服务器发送两个数据包,那么recvfrom()将读取第一个数据包并打印其数据,然后它将不断地反复读取第二个数据包。 据我所知,一旦成功执行读取操作,数据包应该从套接字中删除,但这似乎没有发生。 我知道客户端没有重新发送数据,因为每当客户端发送数