File APIs for Java Developers
Manipulate DOC, XLS, PPT, PDF and many others from your application.
The moose likes Servlets and the fly likes Incomplete Request At Server Big Moose Saloon
  Search | Java FAQ | Recent Topics | Flagged Topics | Hot Topics | Zero Replies
Register / Login
JavaRanch » Java Forums » Java » Servlets
Bookmark "Incomplete Request At Server " Watch "Incomplete Request At Server " New topic

Incomplete Request At Server

poruporuthan poruporuthan

Joined: Dec 03, 2003
Posts: 2
Hi everybody,
I have a problem while sending large requests(in XML format) to a servlet over a secure http connection. I am using HttpsURLConnection to send the request.
At the server end, when i try to get the content length using getContentLength(), it shows correct value. But the InputStream object's available() method returns a smaller value and so does the read method when trying to read the data. I have tried using readFully to read getContentLength() amount of data, but with the same result.
Servlet works fine with smaller requests.
The client side code for sending the request is as follows:
HttpsURLConnection objConnection = ...
OutputStream out = objConnection.getOutputStream();
byte buffer[]=strRequestXML.getBytes();
Are there any properties to be set at either client or server end?
Mark Spritzler

Joined: Feb 05, 2001
Posts: 17276

Welcome to the JavaRanch! Please adjust your displayed name to meet the
JavaRanch Naming Policy.
You can change it
Thanks! and welcome to the JavaRanch!

Perfect World Programming, LLC - iOS Apps
How to Ask Questions the Smart Way FAQ
Pravin Panicker
Ranch Hand

Joined: Oct 05, 2000
Posts: 62
Dear Roshan,
Good 2 meet you here
I dunno the exact nature of your problem. Hope you must've solved it now. If yes please post what went wrong.
First of all at the client side, make sure that the xml string you r writing to outputStream is of the proper size. print the byte[] size and verify.
Next, If you are getting proper size @ the server side, but available() is returning lesser value, applying a small time delay could help before reading the string at the server side.
If you could show the server side snippet for reading the data, then could apply some thoughts.

Pravin R Panicker<br />SCJP,SCWCD
William Brogden
Author and all-around good cowpoke

Joined: Mar 22, 2000
Posts: 13037
The available method only shows whats currently in the input buffer, given the way that TCP/IP sends chunks of data, this will only be the entire message for very small messages.
The simplest thing to do is read and parse the data as a stream until the end is hit.
If you absolutely have to have all the text in memory in a single chunk, you must repeatedly read characters as they come in and assemble the chunk yourself.
I agree. Here's the link:
subject: Incomplete Request At Server
It's not a secret anymore!