[prev in list] [next in list] [prev in thread] [next in thread] 

List:       httpclient-users
Subject:    Re: protocol problem in MultiPartAsyncEntityProducer implementation
From:       vostinar laurian <vostinarlaurian () yahoo ! com ! INVALID>
Date:       2023-10-20 9:04:10
Message-ID: 96538431.121561.1697792650098 () mail ! yahoo ! com
[Download RAW message or body]


 If I try this code:
  final CloseableHttpAsyncClient client = HttpAsyncClients.custom()                   \
.setVersionPolicy(HttpVersionPolicy.FORCE_HTTP_1)                        .build();  \
client.start();

                  final HttpPost method = new HttpPost("http://localhost:8884");      \
final Future<SimpleHttpResponse> future = client.execute(                   new \
BasicRequestProducer(method,new FileEntityProducer(new File("C:\\Temp\\mytest.txt"), \
2, ContentType.create("binary/octet-stream"), false)),                              \
SimpleResponseConsumer.create(),                              new \
FutureCallback<SimpleHttpResponse>() {  @Override                                    \
public void completed(final SimpleHttpResponse response) {                            \
System.out.println(response.getBody());                                    }  \
@Override                                    public void failed(final Exception ex) { \
System.out.println( ex);                                    }  @Override              \
public void cancelled() {                                          \
System.out.println("cancelled");                                    }  });            \
future.get();  client.close(CloseMode.GRACEFUL);
using netcat command (i use cygwin) :  while true; do echo -e "HTTP/1.1 200 OK\n" | \
nc -l 8884; echo -e "\n\n---------------------------------------\n"; done only the \
first two letters from the file are received in console. Calling  \
requestConfigBuilder.setExpectContinueEnabled(false) has no effect because that one \
                is false by default.
      On Thursday, October 19, 2023 at 02:58:31 PM GMT+3, Oleg Kalnichevski \
<olegk@apache.org> wrote:    
 

On 19/10/2023 13:30, vostinar laurian wrote:
> Hi,
> I implemented a MultiPartAsyncEntityProducer, my code is:  here
> 
> > > > 
> servoy-extensions/com.servoy.extensions...
> > 
> 
> My code is based on  FileEntityProducer , just that instead of writing just a file \
> content, it writes more stuff. It seems to work fine, but I have a complaint: when \
> using a netcat command as a server( while true; do echo -e "HTTP/1.1 200 OK\n" | nc \
> -l 8884; echo -e "\n\n---------------------------------------\n"; done )   only the \
> first producer is sent to server (basically produce method is not called enough \
> times). With other servers same code works fine. Seems to me there is some protocol \
> problem that server expects the whole request at once and client does some more \
> communication. Any ideas how I can fix this issue? Thanks!
> 
Disable `expect-continue` handshake on the client side and try again. If 
that makes no difference, create a project with no dependencies on your 
local environment that reproduces the problem, put it on GitHub and 
share the link. I will take a closer look.

Oleg

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

  



[prev in list] [next in list] [prev in thread] [next in thread] 

Configure | About | News | Add a list | Sponsored by KoreLogic