Why do I get empty request from the Jakarta Commons HttpClient?

Posted by polyurethan on Stack Overflow See other posts from Stack Overflow or by polyurethan
Published on 2010-03-08T12:14:47Z Indexed on 2010/03/08 12:36 UTC
Read the original article Hit count: 253

I have a problem with the Jakarta Commons HttpClient. Before my self-written HttpServer gets the real request there is one request which is completely empty. That's the first problem. The second problem is, sometimes the request data ends after the third or fourth line of the http request:

POST / HTTP/1.1
User-Agent: Jakarta Commons-HttpClient/3.1
Host: 127.0.0.1:4232

For debugging I am using the Axis TCPMonitor. There every things is fine but the empty request.

How I process the stream:

StringBuffer requestBuffer = new StringBuffer();

InputStreamReader is = new InputStreamReader(socket.getInputStream(), "UTF-8");

int byteIn = -1;
do {
    byteIn = is.read();
    if (byteIn > 0) {
        requestBuffer.append((char) byteIn);
    }
} while (byteIn != -1 && is.ready());

String requestData = requestBuffer.toString();

How I send the request:

client.getParams().setSoTimeout(30000);

method = new PostMethod(url.getPath());
method.getParams().setContentCharset("utf-8");
method.setRequestHeader("Content-Type", "application/xml; charset=utf-8");
method.addRequestHeader("Connection", "close");
method.setFollowRedirects(false);

byte[] requestXml = getRequestXml();

method.setRequestEntity(new InputStreamRequestEntity(new ByteArrayInputStream(requestXml)));

client.executeMethod(method);

int statusCode = method.getStatusCode();

Have anyone of you an idea how to solve these problems?

Alex

© Stack Overflow or respective owner

Related posts about java

Related posts about commons-httpclient