hc-httpclient-users mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Safwan Kamarrudin" <shaihu...@alumni.cmu.edu>
Subject Buffered HttpResponse
Date Sun, 20 Aug 2006 00:33:42 GMT
Greetings,

I have a question on how to buffer a HttpResponse and perform some
operations in each iteration. In short, I would like to buffer a
FileEntity response and update a JProgressBar with the transfer
progress of the FileEntity. Below is my code snippet:

                    response.setStatusCode(HttpStatus.SC_OK);
                    File fSharedFile = new File(getSharedFiles().get(path));
                    String sFileName = fSharedFile.getName();

                    if (fSharedFile.exists()) {
                        //display progress bar and set the size
                        showUlProgressBar(fSharedFile.getName());
                        setUlProgressBarSize(sFileName,
Integer.parseInt(String.valueOf(fSharedFile.length())));

                        FileEntity body = new FileEntity(fSharedFile,
"application/octet-stream");
                        body.setChunked(true);
                        BufferedHttpEntity bufBody = new
BufferedHttpEntity(body);
                        response.setEntity(bufBody);
                        InputStream in = bufBody.getContent();

                        OutputStream out = new
HttpDataOutputStream(new
SocketHttpDataTransmitter(htRequests.get(this.thisConn.toString()), 8
* 1024));

                        System.out.println("Serving file " +
fSharedFile.getPath());

                        // Transfer bytes from in to out
                        byte[] buf = new byte[8 * 1024];
                        int len;
                        int iTransferredSize = 0;

                        while ((len = in.read(buf)) > 0) {
                            out.write(buf, 0, len);
                            iTransferredSize += len;
                            //update file transfer progress
                            updateUlProgressBar(sFileName, iTransferredSize);
                        }

                        System.out.println("Done serving file " +
fSharedFile.getPath());

                        //Close streams
                        in.close();
                        out.close();

                        //hide progress bar
                        hideUlProgressBar(fSharedFile.getName());
                    }


The response will be sent to the client but it will be malformed. For
some reason the client receives the HTTP stream but is unable to act
on it.

I would be really glad if someone could point me in the right direction.

Thanks in advance.

---------------------------------------------------------------------
To unsubscribe, e-mail: httpclient-user-unsubscribe@jakarta.apache.org
For additional commands, e-mail: httpclient-user-help@jakarta.apache.org


Mime
View raw message