Streaming data from client with HTTP Post

opus111 picture opus111 · Dec 13, 2012 · Viewed 16.5k times · Source

I would like to stream data from the client to the server.

My application streams audio data to the server. I do not know how long the audio will be when I begin streaming it. I want to reduce latency by transmitting the data as it is being recorded. Once all the data has been uploaded, then I will process it.

So, what I would like is a HTTP POST where the body is streamed. At the client, the POST would be sent as the data is available. At the server end, I would like it to arrive like a normal POST with a complete body of collected data.

I am currently using Restlet, and implementing my stream as a Chunked POST to the Restlet framework.

However, I can not find a client API that allows me to begin the POST, then start streaming the data.

I haven't found anything useful searching the archive. Can anyone give me a pointer here. Can HTTP POST be used this way? Can I use Restlet for this? Is there another standard pattern/API for streaming from the client to the server?

Many thanks in advance Peter

Answer

opus111 picture opus111 · Dec 14, 2012

Going to answer my own question for those that come after.

Here is a nice tutorial on streaming requests with Apache HttpClient

Search for "Request Streaming:"

http://hc.apache.org/httpclient-3.x/performance.html#Request_Response_entity_streaming