套接字超时不起作用,InputStream 读取块
Socket timeout not working, InputStream read blocks
我在读取套接字输入流时遇到问题。
在阅读之前,我为 HttpClient
设置了超时
connectionManager.getParams().setSoTimeout(1000*10);
connectionManager.getParams().setConnectionTimeout(1000*10);
HttpClient client = new HttpClient(connectionManager);
尝试读取响应流而不是 SocketTimeoutException 我在 read() 方法上遇到阻塞。
client.executeMethod(method);
InputStream stream = method.getResponseBodyAsStream();
ByteArrayOutputStream baos = new ByteArrayOutputStream();
try {
int read;
byte[] bytes = new byte[1024];
while ((read = stream.read(bytes)) != -1) {
baos.write(bytes, 0, read);
}
} catch (Throwable e) {
e.printStackTrace();
} finally {
try {
baos.close();
stream.close();
} catch (Throwable e) {
e.printStackTrace();
}
}
如何无块地读取输入流以及为什么 soTimeout 不起作用?
非常感谢。
已解决。我添加了调用线程读取响应的停止方法的线程监视器。
我在读取套接字输入流时遇到问题。 在阅读之前,我为 HttpClient
设置了超时connectionManager.getParams().setSoTimeout(1000*10);
connectionManager.getParams().setConnectionTimeout(1000*10);
HttpClient client = new HttpClient(connectionManager);
尝试读取响应流而不是 SocketTimeoutException 我在 read() 方法上遇到阻塞。
client.executeMethod(method);
InputStream stream = method.getResponseBodyAsStream();
ByteArrayOutputStream baos = new ByteArrayOutputStream();
try {
int read;
byte[] bytes = new byte[1024];
while ((read = stream.read(bytes)) != -1) {
baos.write(bytes, 0, read);
}
} catch (Throwable e) {
e.printStackTrace();
} finally {
try {
baos.close();
stream.close();
} catch (Throwable e) {
e.printStackTrace();
}
}
如何无块地读取输入流以及为什么 soTimeout 不起作用?
非常感谢。
已解决。我添加了调用线程读取响应的停止方法的线程监视器。