On Thu, 2007-03-22 at 17:44 +0200, Mehmet Özer METİN wrote:
> Hello;
> 
> I am trying to implement a web proxy which can reformat web pages using
> HTTPComponents project.
> I have modified ElementalHTTPServer (packaged as example) in a way that when
> a request comes, Server requests the real
> page from underlying web server and responses this to client.
> 
> However, in ElementalHTTPServer HttpRequestHandler handle method, whenever I
> try to provide the response according to
> comming page, the content was always smaller than accual one.
> 
> Some important parts of my code is as follows;
> 
> HttpResponse responseRedirect=redirect("localhost", target);
> response.setStatusCode(HttpStatus.SC_OK);
> EntityTemplate body = new EntityTemplate(new RedirectContentProducer(
> responseRedirect.getEntity()));
> body.setContentType("text/html; charset=UTF-8");
> response.setEntity(body);
> 
> 
> static class RedirectContentProducer implements ContentProducer{
> 
>         private HttpEntity entity;
> 
>         public RedirectContentProducer(HttpEntity entity) {
>             this.entity=entity;
>         }
>         public void writeTo(final OutputStream outstream) throws IOException
> {
> 
>             System.out.print("CONTENT LENGTH: "+entity.getContentLength()+"
> ||");
>             InputStream in=entity.getContent();
>             byte[] buffer = new byte[1024];
>             int totalread=0;
>             int readCount = 0;
>             while ( (readCount = in.read(buffer)) != -1) {
>                 outstream.write(buffer, 0, readCount);
>                 totalread+=readCount;
>             }
>             System.out.println("CONTENT WRITE "+totalread);
>             outstream.flush();
>         }
> }
> 
> And I get response
> 
> Listening on port 8090
> Incoming connection from /127.0.0.1
> New connection thread
> localhost:8090
> TARGET=/tomcat-docs/jndi-datasource-examples-howto.html
> >> Request URI: /tomcat-docs/jndi-datasource-examples-howto.html
> << Response: HTTP/1.1 200 OK
> Connection kept alive...
> CONTENT LENGTH: 51619 ||CONTENT WRITE 7984
> Incoming connection from /127.0.0.1
> New connection thread
> localhost:8090
> TARGET=/tomcat-docs/images/tomcat.gif
> >> Request URI: /tomcat-docs/images/tomcat.gif
> Incoming connection from /127.0.0.1
> << Response: HTTP/1.1 200 OK
> Connection kept alive...
> CONTENT LENGTH: 1934 ||CONTENT WRITE 1934
> New connection thread
> localhost:8090
> TARGET=/tomcat-docs/images/asf-logo.gif
> Incoming connection from /127.0.0.1
> New connection thread
> localhost:8090
> TARGET=/tomcat-docs/images/printer.gif
> >> Request URI: /tomcat-docs/images/asf-logo.gif
> >> Request URI: /tomcat-docs/images/printer.gif
> << Response: HTTP/1.1 200 OK
> Connection kept alive...
> CONTENT LENGTH: 7279 ||CONTENT WRITE 7279
> << Response: HTTP/1.1 200 OK
> Connection kept alive...
> CONTENT LENGTH: 438 ||CONTENT WRITE 438
> 
> The situation is the same if I use
> 
> HttpResponse responseRedirect=redirect("localhost", target);
> BasicHttpEntity body= new BasicHttpEntity();
> body.setContent(responseRedirect.getEntity().getContent());
> body.setContentType("text/html; charset=UTF-8");
> response.setEntity(body);
> 
> As you can see, although accual the content length is 51519, I can only have
> 7984 bytes and send it back to client.
> 
> Most possibly, I made a mistake somewhere, but I could not find it out.
> 
> Any helps will welcome,
> 
> Thanks in advance.
> 
> Ozer Metin

Hi Mehmet

I do not see any obvious problems with this code snippet. If your
application is reasonably small and self-contained please post the
complete source to the list or to me directly. I'll run it under the
debugger and try to pinpoint the problem.

Oleg 




---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]

Reply via email to