问题描述
publicstaticInputStreamsendGetAsStream(Stringurl,HttpClienthttpClient){/**创建GET方法的实例*/GetMethodgetMethod=newGetMethod(url);/**使用系统提供的默认的恢复策略*/getMethod.getParams().setParameter(HttpMethodParams.RETRY_HANDLER,newDefaultHttpMethodRetryHandler());try{HttpConnectionManagerParamsmanagerParams=httpClient.getHttpConnectionManager().getParams();/**设置连接超时时间(单位毫秒)*/managerParams.setConnectionTimeout(10000);getMethod.getParams().setParameter(HttpMethodParams.SO_TIMEOUT,10000);//请求超时/**执行getMethod*/intstatusCode=httpClient.executeMethod(getMethod);if(statusCode!=HttpStatus.SC_OK){logger.error("执行Get方法出错:"+url);}returngetMethod.getResponseBodyAsStream();}catch(HttpExceptione){thrownewRuntimeException("协议不正确或返回内容出错:",e);}catch(SocketTimeoutExceptione){thrownewRuntimeException("socket链接超时"+url,e);}catch(IOExceptione){thrownewRuntimeException("执行Get方法网络异常"+url,e);}finally{/**释放连接*/getMethod.releaseConnection();}}释放链接后这个流就关闭了java.io.IOException:Attemptedreadonclosedstream.InputStreamis=newDataInputStream(getMethod.getResponseBodyAsStream());这样的转一下也是报流关闭了,请教下大家应该怎么处理分不多了
解决方案
解决方案二:
try的finally处理中关闭了连接,自然流也关闭了
解决方案三:
楼上正解,不执行getMethod.releaseConnection();就好了