当前位置: 首页 > 面试题库 >

确定HTTP响应的大小?

章安宜
2023-03-14
问题内容

有没有办法确定HTTPServletResponse内容的大小?我读了这个get-size-of-http-response-in-
java问题,但可悲的是我在哪里工作,我无法访问CommonsIO :(

响应内容由单个复杂对象组成,因此我考虑将其写到临时文件中,然后检查该文件。在html" target="_blank">应用程序在生产环境中运行时,这不是我想做的诊断方法,因此,如果可能的话,请避免使用它。

PS我读了埃里克森的答案,但它提到了输入流,我想知道要写出的对象的大小…如果该writeObject()方法返回一个代表写的字节数而不是void
的数字,那将非常好


问题答案:

我最终找到了一种获得想要的方法:

URLConnection con = servletURL.openConnection();
BufferedInputStream bif = new BufferedInputStream(con.getInputStream());
ObjectInputStream input = new ObjectInputStream(bif);
int avail = bif.available();

System.out.println("Response content size = " + avail);

这使我可以看到客户端的响应大小。我仍然想知道它在发送之前在服务器端是什么,但这是次要的事情。



 类似资料:
  • 我的主web服务器中有反向代理,专门用于某个微服务,并将请求转发到相应的微服务。 这对于纯JSON响应非常有效,但我最近在尝试通过反向代理提供内容(流响应)时遇到了问题。服务内容的方式是不相关的,当直接访问服务而不是通过反向代理访问服务时,(视频)内容按预期服务。 服务内容: 同样,videoReadSeeker和内容的服务方式不是问题,问题是通过反向代理将我的响应按预期转发给请求者;当直接访问该

  • 主要内容:HTTP响应完整格式HTTP响应完整格式 HTTP的响应也由三部分组成(响应行+响应头+响应体): 以下是一个实际的HTTP响应示例: ①报文协议及版本; ②状态码及状态描述; ③响应报文头,也是由多个属性组成; ④响应报文体,即我们真正要的“干货”。

  • 基本响应 当然,所有的路由及控制器必须返回某个类型的响应,并发送回用户的浏览器。Laravel 提供了几种不同的方法来返回响应。最基本的响应就是从路由或控制器简单的返回一个字符串: $router->get('/', function () { return 'Hello World'; }); 指定的字符串会被框架自动转换成 HTTP 响应。 响应对象 但是,对于大多数路由和控制器行为

  • Blade 中操作响应的对象是 Response 发送文本 Response#text 用于发送一个状态码为 200 的文本响应 public void responseText(Response response){ response.text("Hello World"); } 发送HTML Response#html 用于发送一个状态码为 200 的HTML响应 public voi

  • 我正在使用Spring WebFlux编写http爬虫程序,它很容易并行执行和设置http超时: 但是如何限制页面响应大小,比如我不想为每个URL下载超过500KB的数据。读取HTTP头Content-Length是不可靠的。我想我需要降低一个级别,直接使用字节缓冲区和Netty事件,但最好使用flux/mono来包装它,以继续使用这些原语

  • 我正在使用WSO2发送Rest请求,这是我能够做到的。但是在我向客户发送响应之前,我希望有一些逻辑。后端Rest服务返回“成功”作为响应字符串。我有一个Java的代码用来做这件事,我想在WSO2中使用相同的逻辑。逻辑很简单1.如果HTTP状态大于eq到200并且小于300并且共振Str.equalsIgnoreCase(成功)然后返回RetCode=C; Message=成功ELSE返回RetCo