Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/324.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 返回空inputStream的URLConnection_Java_Url_Inputstream_Httpurlconnection_Urlconnection - Fatal编程技术网

Java 返回空inputStream的URLConnection

Java 返回空inputStream的URLConnection,java,url,inputstream,httpurlconnection,urlconnection,Java,Url,Inputstream,Httpurlconnection,Urlconnection,我试图从URL连接获取输入流pdf,但得到的是一个空的输入流。谁能告诉我我做错了什么?代码如下: <!-- language: java --> URL fileUrl = new URL("https://www.dropbox.com/s/ao3up7xudju4qm0/Amalgabond%20Adhesive%20Agent.pdf"); HttpURLConnection connection = (HttpURLConnection)fileUrl.openConnec

我试图从
URL连接
获取输入流pdf,但得到的是一个空的输入流。谁能告诉我我做错了什么?代码如下:

<!-- language: java -->

URL fileUrl = new URL("https://www.dropbox.com/s/ao3up7xudju4qm0/Amalgabond%20Adhesive%20Agent.pdf");
HttpURLConnection connection = (HttpURLConnection)fileUrl.openConnection();
connection.connect(); 
InputStream is = connection.getInputStream();
Log.i("TAG", "is.available(): " + is.available());

URL文件URL=新URL(“https://www.dropbox.com/s/ao3up7xudju4qm0/Amalgabond%20Adhesive%20Agent.pdf");
HttpURLConnection connection=(HttpURLConnection)fileUrl.openConnection();
connection.connect();
InputStream is=connection.getInputStream();
Log.i(“TAG”、“is.available():”+is.available());

is.available()

您应该使用类似这样的内容,而不是available():


read()。它不会告诉您输入流的长度,因此它返回零并不表示它是空的。请参阅Javadoc,其中明确说明了所有这些


只要一直读到流结束。

如果您的最终目标是从Dropbox下载文件,您应该使用,或者这个。否则,到Dropbox上的文件的URL连接将下载一个网页(HTML),其中显示一个链接供您单击(还有许多其他内容!)以下载您的文件。

它在这里工作得很好,is.availbale()返回15595字节。我对此束手无策。我不知道为什么我会收到
0
或有时收到
1
您以前用浏览器尝试过该URL吗?是的,浏览器正在显示带有此URL的pdf文件
https://www.dropbox.com/s/ao3up7xudju4qm0/Amalgabond%20Adhesive%20Agent.pdf
您在哪个操作系统上工作?如何使用此缓冲区打印内容?如果需要打印文本,你可以用扫描仪来代替:为什么你这样做时会得到字节数
是.available()
?可能是因为我的Internet连接比你的延迟小,所以当我调用
available()
@sladvak时从流中读取的字节数更多这是一个PDF。你不能在上面使用扫描仪。我不想下载该文件。我只想打开它,检索
inputstream
并从中提取字节。
int bytesRead;
byte[] buffer = new byte[100000];

while((bytesRead = is.read(buffer)) > 0){

    // Do something here with buffer
}