【问题标题】:Java - send HTTP POST request without downloading all the contentJava - 发送 HTTP POST 请求而不下载所有内容
【发布时间】:2013-12-03 01:46:37
【问题描述】:

是否可以将 HTTP POST 请求发送到网络服务器并仅检索响应的标头或仅读取正文的几个字节,因此根本不会下载其余部分(因此不会消耗流量)?如果是,怎么做?

我知道有一个 HEAD 方法,但是我需要通过 POST 方法来实现它。好吧,我不确定是否需要 POST 方法,我只需要发布数据。也许如果网络服务器的安全性不够好(它不检查它使用的方法 - 它只是直接访问发布数据),是否可以通过 HEAD 请求发送“发布数据”?

【问题讨论】:

  • 您可以直接发送POST方法,并使用您的java客户端仅读取标题内容。如果您不触摸响应正文,则不会下载。
  • 根据我的流量记录,即使我不碰身体也会被下载。例如当我只想检查一些标头值(HttpURLConnection.getHeaderField()、URLConnection.getContentLength() ...)时,它会下载完整响应
  • 我认为如果您尽快阅读您的响应标头,然后在阅读后立即关闭您的响应。您的回复内容不会完全下载。当然,您的客户会在您关闭回复之前尝试尽可能多地下载。但是如果你的内容足够大,这种方式应该可以节省你的带宽。
  • 在 Java 中这怎么可能?

标签: java http post response


【解决方案1】:

没有用于此的内置 HTTP 机制,并且 HTTP HEAD 请求不允许正文中的内容。但是,如果您是编写服务器代码的人,那么一切皆有可能。

如果是这种情况,我会建议一个触发此行为的 URL 参数。例如:

POST /myURL - This would return the whole response

POST /myURL?body=minimal - Returns the reduced size response that you are looking for.

而且您必须编写服务器方法以根据 URL 参数构造并返回适当的响应。

【讨论】:

  • 很遗憾,我无权访问需要向其发送请求的服务器代码,但感谢您的想法
猜你喜欢
  • 2011-03-20
  • 2012-05-11
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多