I get this error when I read an InputStream and try to used it again.
07-20 17:36:24.762 11253-11277/? W/System.err﹕ java.io.IOException
07-20 17:36:24.762 11253-11277/? W/System.err﹕ at java.io.InputStream.reset(InputStream.java:208)
07-20 17:36:24.762 11253-11277/? W/System.err﹕ at demo31.com.maps.GMapDirections$DownloadDocumentTask.doInBackground(GMapDirections.java:134)
07-20 17:36:24.762 11253-11277/? W/System.err﹕ at demo31.com.maps.GMapDirections$DownloadDocumentTask.doInBackground(GMapDirections.java:86)
07-20 17:36:24.762 11253-11277/? W/System.err﹕ at android.os.AsyncTask$2.call(AsyncTask.java:292)
07-20 17:36:24.762 11253-11277/? W/System.err﹕ at javautil.concurrent.FutureTask.run(FutureTask.java:237)
07-20 17:36:24.762 11253-11277/? W/System.err﹕ at android.os.AsyncTask$SerialExecutor$1.run(AsyncTask.java:231)
07-20 17:36:24.762 11253-11277/? W/System.err﹕ at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1112)
07-20 17:36:24.762 11253-11277/? W/System.err﹕ at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:587)
07-20 17:36:24.762 11253-11277/? W/System.err﹕ at java.lang.Thread.run(Thread.java:818)
07-20 17:36:24.762 11253-11277/? D/GMapDirections﹕ Exception while downloading data: java.io.IOException
The code that I'm using is ...
@Override
protected Document doInBackground(ArrayList... latLngs) {
Log.d(TAG, "DownloadDocumentTask(doInBackground): Estoy dentro del background!!!");
try {
HttpsURLConnection urlConnection;
FileService file = new FileService();
InputStream iStream;
Document result;
file.writeLog(TAG, GMapDirections.class.getName(), getUrlConnection());
URL url = new URL(getUrlConnection());
// Creating an http connection to communicate with url
urlConnection = (HttpsURLConnection) url.openConnection();
// Connecting to url
urlConnection.setRequestMethod("POST");
urlConnection.setRequestProperty("Content-Type", "application/x-www-form-urlencoded");
urlConnection.setRequestProperty("charset", "utf-8");
urlConnection.setRequestProperty("Accept", "application/xml");
urlConnection.setDoOutput(true);
urlConnection.setDoInput(true);
urlConnection.setUseCaches(false);
urlConnection.connect();
//Return data
iStream = urlConnection.getInputStream();
//Display what returns POST request
BufferedReader br = new BufferedReader(new InputStreamReader(iStream));
StringBuilder sb = new StringBuilder();
String line;
while ((line = br.readLine()) != null) {
sb.append(line + "\n");
}
br.close();
file.writeLog(GMapDirections.TAG, "doInBackground", sb.toString());
// Parse the data to a Document Object
DocumentBuilder builder = DocumentBuilderFactory.newInstance().newDocumentBuilder();
result = builder.parse(iStream);
urlConnection.disconnect();
return result;
} catch (Exception e) {
e.printStackTrace();
Log.d(TAG, "Exception while downloading data: " + e.toString());
}
return null;
}
The exception is launched when I try to parse the content of iStream because previously I have read it using BufferedReader.
DocumentBuilder builder = DocumentBuilderFactory.newInstance().newDocumentBuilder();
result = builder.parse(iStream);
So, how I can read the iStream
with the BufferedReader
and then used it to parse the content and not get an error?