Resty
Resty copied to clipboard
connection timeout
Funny bug that i've discovered, when mistakenly set timeout to 10 milliseconds
the bug in this code
void fill(URLConnection anUrlConnection) throws IOException { urlConnection = anUrlConnection; try { inputStream = anUrlConnection.getInputStream(); } catch (IOException e) { // Per http://docs.oracle.com/javase/1.5.0/docs/guide/net/http-keepalive.html // (comparable documentation exists for later java versions) // if an HttpURLConnection was used clear the errorStream and close it // so that keep alive can keep doing its work if (anUrlConnection instanceof HttpURLConnection) { HttpURLConnection conn = (HttpURLConnection) anUrlConnection; InputStream es = new BufferedInputStream(conn.getErrorStream());
ByteArrayOutputStream baos = new ByteArrayOutputStream();
// read the response body
byte[] buf = new byte[1024];
int read = -1;
while ((read = es.read(buf)) > 0) {
baos.write(buf, 0, read);
}
// close the errorstream
es.close();
throw new IOException("Error while reading from " + conn.getRequestMethod() + ": [" + conn.getResponseCode() + "] "
+ conn.getResponseMessage() + "\n" + new String(baos.toByteArray(), "UTF-8"), e);
} else {
throw e;
}
}
}
we are trying to read output while stream is already closed by urlConnections so never reaching throw section
Thank you. I'll have a look
Jochen
Sent from my phone
On Apr 24, 2014, at 7:39, stalexxx [email protected] wrote:
Funny bug that i've discovered, when mistakenly set timeout to 10 milliseconds
the bug in this code
void fill(URLConnection anUrlConnection) throws IOException { urlConnection = anUrlConnection; try { inputStream = anUrlConnection.getInputStream(); } catch (IOException e) { // Per http://docs.oracle.com/javase/1.5.0/docs/guide/net/http-keepalive.html // (comparable documentation exists for later java versions) // if an HttpURLConnection was used clear the errorStream and close it // so that keep alive can keep doing its work if (anUrlConnection instanceof HttpURLConnection) { HttpURLConnection conn = (HttpURLConnection) anUrlConnection; InputStream es = new BufferedInputStream(conn.getErrorStream());
ByteArrayOutputStream baos = new ByteArrayOutputStream(); // read the response body byte[] buf = new byte[1024]; int read = -1; while ((read = es.read(buf)) > 0) { baos.write(buf, 0, read); } // close the errorstream es.close(); throw new IOException("Error while reading from " + conn.getRequestMethod() + ": [" + conn.getResponseCode() + "] " + conn.getResponseMessage() + "\n" + new String(baos.toByteArray(), "UTF-8"), e); } else { throw e; } }
} we are trying to read output while stream is already closed by urlConnections so never reaching throw section
— Reply to this email directly or view it on GitHub.