You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@hc.apache.org by "oliver z (JIRA)" <ji...@apache.org> on 2010/10/01 07:49:32 UTC

[jira] Commented: (HTTPCLIENT-1004) EofSensorInputStreams available() always returns 0

    [ https://issues.apache.org/jira/browse/HTTPCLIENT-1004?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=12916790#action_12916790 ] 

oliver  z commented on HTTPCLIENT-1004:
---------------------------------------

i tested it with a free online mp3:

HttpClient httpclient = new DefaultHttpClient();
        HttpGet httpget = new HttpGet("http://www.ravn.de/stuff/Programmierer.mp3");

        HttpResponse response = httpclient.execute(httpget);
        HttpEntity entity = response.getEntity();
        if (entity != null) {
            InputStream instream = entity.getContent();
            try {
                while (instream.read() != -1) {
                    System.out.println(instream.available());
                }
            } finally {
                instream.close();
            }
        }

looks pretty strange to me 
i'm not sure why in my application the output is always 0... any ideas?

> EofSensorInputStreams available() always returns 0
> --------------------------------------------------
>
>                 Key: HTTPCLIENT-1004
>                 URL: https://issues.apache.org/jira/browse/HTTPCLIENT-1004
>             Project: HttpComponents HttpClient
>          Issue Type: Bug
>          Components: HttpClient
>    Affects Versions: 4.1 Alpha2
>         Environment: win 7 x64, netbeans 6.9.1, jdk6_21
>            Reporter: oliver  z
>
> i just wrote a little mp3 audio player which retrieves a stream and plays it. 
> to make sure the user does not play further than the song has been stored into ram, i thought i just use the available() method from the class EofSensorInputStream.
> But this method always returns 0 (normal http connection), casting to a ByteArrayInputStream would be nice, but thats not working... so i took a look at the implementation of available():
> http://www.docjar.com/html/api/org/apache/http/conn/EofSensorInputStream.java.html
>   165       @Override
>   166       public int available() throws IOException {
>   167           int a = 0; // not -1
>   168   
>   169           if (isReadAllowed()) {
>   170               try {
>   171                   a = wrappedStream.available();
>   172                   // no checkEOF() here, available() can't trigger EOF
>   173               } catch (IOException ex) {
>   174                   checkAbort();
>   175                   throw ex;
>   176               }
>   177           }
>   178   
>   179           return a;
>   180       }
> wrappedStream is an InputStream, and InputStream says to available():
> The available method for class InputStream always returns 0. 
> This method should be overridden by subclasses. 
> Im not sure if this is a bug or a feature request
> Is there any other way how i can check how many bytes has been transfered into ram?

-- 
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.


---------------------------------------------------------------------
To unsubscribe, e-mail: dev-unsubscribe@hc.apache.org
For additional commands, e-mail: dev-help@hc.apache.org