On Thu, 9 Feb 2012, Mattias Gaertner wrote:

On Tue, 7 Feb 2012 10:33:04 +0100
Rainer Stratmann <rainerstratm...@t-online.de> wrote:

Am Monday 19 December 2011 01:22:18 schrieb Mattias Gaertner:
Hi,

For some reason TFPHTTPClient.Post hangs when accessing a "solr"
server over "tomcat". It works with "solr" over "jetty".
"curl" works fine with both, so I guess the tomcat server works
normally.

Here is the code:

    client:=TFPHTTPClient.Create(nil);
    client.RequestHeaders.Add('Content-Type: text/xml');
    client.RequestBody:=ms; // a TMemoStream with some xml to post
    client.Post(URL);

It hangs here:

procedure TFPCustomHTTPClient.ReadResponse
...
  else if L<0 then
    // No content-length, so we read till no more data available.
    Repeat
      R:=Transfer(ReadBufLen);
    until (R=0);

If you have no content-length then mostly in the header ist a
field 'Transfer-Encoding: chunked'. Then the content is send in snippets. It
is exactly defined how long to read until there is no more content.

http://en.wikipedia.org/wiki/Chunked_transfer_encoding

Thanks for the hint. I implemented chunked reading and now it works
fast without timeouts. :)

Did you implement this in TFPCustomHTTPClient itself ?
If so, please provide a patch.

Michael.
_______________________________________________
fpc-pascal maillist  -  fpc-pascal@lists.freepascal.org
http://lists.freepascal.org/mailman/listinfo/fpc-pascal

Reply via email to