Java equivalent of the VB Request.InputStream
        Posted  
        
            by 
                Android Addict
            
        on Stack Overflow
        
        See other posts from Stack Overflow
        
            or by Android Addict
        
        
        
        Published on 2012-11-27T15:25:30Z
        Indexed on 
            2012/11/27
            17:04 UTC
        
        
        Read the original article
        Hit count: 335
        
I have a web service that I am re-writing from VB to a Java servlet. In the web service, I want to extract the body entity set on the client-side as such:
StringEntity stringEntity = new StringEntity(xml, HTTP.UTF_8);
stringEntity.setContentType("application/xml");
httppost.setEntity(stringEntity);
In the VB web service, I get this data by using:
Dim objReader As System.IO.StreamReader
objReader = New System.IO.StreamReader(Request.InputStream)
Dim strXML As String = objReader.ReadToEnd
and this works great. But I am looking for the equivalent in Java.
I have tried this:
ServletInputStream dataStream = req.getInputStream();
byte[] data = new byte[dataStream.toString().length()];
dataStream.read(data);
but all it gets me is an unintelligible string:
data = [B@68514fec
Please advise.
Edit
Per the answers, I have tried:
ServletInputStream dataStream = req.getInputStream();
ByteArrayOutputStream buffer = new ByteArrayOutputStream();
int r;
byte[] data = new byte[1024*1024];
while ((r = dataStream.read(data, 0, data.length)) != -1) {
    buffer.write(data, 0, r);
} 
buffer.flush();
byte[] data2 = buffer.toByteArray();
System.out.println("DATA = "+Arrays.toString(data2));
whichs yields: DATA = []
and when I try:
System.out.println("DATA = "+data2.toString());
I get:
DATA = [B@15282c7f
So what am I doing wrong? As stated earlier, the same call to my VB service gives me the xml that I pass in.
© Stack Overflow or respective owner