如何解决
java.net.SocketTimeoutException: Read timed out这个问题?
public void doPost(HttpServletRequest request, HttpServletResponse response) throws
ServletException{
ByteArrayOutputStream out = null;
String result = null;
try{
InputStream in = request.getInputStream();
out = new ByteArrayOutputStream();
byte[] buffer = new byte[4096];
int len;
while ((len=in.read(buffer, 0, buffer.length))>-1){ 这句报错!!!
try {
out.write(buffer, 0, len);
} catch (Exception e) {
}
}
out.flush();
result = new String(out.toByteArray(),"utf-8");
}catch(Exception Ex){
//logger.error("",e);
}finally{
if (out!=null) out.close();
if (in!=null) in.close();
}
执行到上面那行代码时,报以下错误:
java.net.SocketTimeoutException: Read timed out
而我在本机测试了N次都没出现,放到生产环境后就偶尔会出现。并且我在生产环境上测试时也没出现,咋搞?
------解决方案--------------------
while ((len=in.read(buffer, 0, buffer.length))>-1)
你这又是何必呢
反正都是读满为止
while ((len=in.read(buffer))>-1){
------解决方案--------------------
修改成"while ((len=in.read(buffer))>0){ "
这个还不可以????
------解决方案--------------------
1、来考虑下网络情况
2、生产环境与开发环境的配置是否不同等等
------解决方案--------------------
你的客户端代码可能有问题。