简体   繁体   中英

URLConnection returning empty inputStream

I am trying to fetch input stream pdf from URL Connection but I am getting an empty input stream. Can anyone please tell me what is I am doing wrong? Following is the code:

<!-- 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());

is.available() is returning 0 empty stream.

According to the javadoc, available() does not block and wait until all data is available, so you might have not completely received your stuff when its called.

You should use something like this instead of available() :

int bytesRead;
byte[] buffer = new byte[100000];

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

    // Do something here with buffer
}

read() is a blocking method.

You're misusing the available() method. It doesn't tell you the length of the input stream, so the fact that it returns zero doesn't indicate that it's empty. See the Javadoc, where all this is explicitly stated.

Just read it until end of stream.

If your ultimate goal is to download a file from Dropbox, you should use the Dropbox Java API , or maybe this simpler solution . Otherwise, a URLConnection to a file on Dropbox will download a web page (in HTML) showing you a link to click (with a lot of other stuff !) for downloading your file.

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM