First you read the response into a
String. That involves getting the data from the server and moving it into your application, roughly speaking. Second you want to read the response again, via an InputStream. But you can't because you already read the response.
So that's where you are going wrong. Is it a good approach? I don't think it is. Why not change your code so that you have one place which does all of the processing, instead of some code which does "processing" and other code which does "additional processing"?
But if you want a quick and dirty fix, you could get your InputStream from the String which you already got from the server. Convert the String to byte[] and use a ByteArrayInputStream; and don't forget to use the correct character set when you convert the String to the byte array. That's the character set which the server used to produce the response. Hopefully you can get it from your Response object or your Entity object.