Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/307.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 检测可使用HTTP请求访问的url_Java_Google App Engine_Http Headers_Httprequest_Httpurlconnection - Fatal编程技术网

Java 检测可使用HTTP请求访问的url

Java 检测可使用HTTP请求访问的url,java,google-app-engine,http-headers,httprequest,httpurlconnection,Java,Google App Engine,Http Headers,Httprequest,Httpurlconnection,首先是我理解的事情: 1) 我可以发送HTTP HEAD请求,200/2XX响应代码意味着可以在那里访问内容 2) 我可以发送一个带有“Range”头的HTTPGET请求,206响应代码表示内容是可访问的 但是,如果给定的服务器不支持HEAD请求,并且不符合Range头,更重要的是,特定文件是一个非常大的文件。检查文件是否可访问的最佳方法是什么?显然,我不想等待10分钟整个文件被下载 我在Google AppEngine上使用Java和basicHttpUrlConnection,因此某些特定的

首先是我理解的事情:

1) 我可以发送HTTP HEAD请求,200/2XX响应代码意味着可以在那里访问内容

2) 我可以发送一个带有“Range”头的HTTPGET请求,206响应代码表示内容是可访问的

但是,如果给定的服务器不支持HEAD请求,并且不符合Range头,更重要的是,特定文件是一个非常大的文件。检查文件是否可访问的最佳方法是什么?显然,我不想等待10分钟整个文件被下载

我在Google AppEngine上使用Java和basic
HttpUrlConnection
,因此某些特定的库可能无法在此平台上运行

我正在考虑最好的方法是发出GET请求,并在第一个字节得到回复后终止它。但是,我找不到通过使用
HttpUrlConnection
实现这一点的方法


如果您能在这里给出一些提示,我们将不胜感激。

请在阅读响应代码后尝试
HttpURLConnection.disconnect()


服务器在发送大文件时,会从客户端接收RST,并中止其连接。

谢谢@zhong.j.yu,我也考虑过同样的事情,但调用connection.getResponseCode()后发生的情况是,线程将一直运行,直到检索到所有内容。除非我在这里使用多线程并使用另一个线程来监视和调用disconnect(),否则我认为这不是一个可行的解决方案。断开连接应该能够释放一切。是的,它将释放一切,但只有在接到呼叫后。问题是,即使只调用connection.getResponseCode(),在内容完全下载之前也不会调用它。getResponseCode()似乎只需要响应头,而不需要响应体。所以它应该在不下载全部内容的情况下快速返回。事实上,至少从我的测试来看,情况并非如此。一旦您初始化连接并发出获取请求,只要套接字已连接,服务器就会开始“推出”内容。可能您可以尝试
GET
plus
,如果在
标题中添加了一个未来日期(?)。如果内容存在且未被修改,它将以304响应。这可能不适用于服务器端动态生成的内容。但您提到它们是特定的文件,所以,它很可能在服务器上有最后修改的时间戳。