浏览 3363 次
锁定老帖子 主题:HttpURLConnection问题
该帖已经被评为新手帖
|
|
---|---|
作者 | 正文 |
发表时间:2007-04-04
我在客户端创建了一个HttpURLConnection连接,发送xml请求,接收的也是xml,并且用SAX来解析,正常情况下都可以成功, 但是有一个情况,服务端接收到请求后不往socket里写东西,而客户端就停住了, 自己做了一个超时的处理线程去关闭HttpURLConnection连接,但是感觉socket还是没有关闭,客户端依然在等待,也没有socket异常. 有没有什么好办法,能使连接超时后能给一个异常. 以下是代码: ////接收数据 private void receiveResponse( HttpURLConnection connection ) throws Exception { MonitorXMLHandler handler = null; InputStream bis = null; handler = handlerFactory.get( monitorName, this ); try { status = connection.getResponseCode(); errorMessage = connection.getResponseMessage(); if ( logger.isLoggable( Level.FINER ) ) { logger.finer( "receive message : status=[" + status + "], messege=[" + errorMessage + "]" ); } bis = new BufferedInputStream( connection.getInputStream() ); connManager.startTimeoutCheck( connection, bis ); // 到这个函数里面就停住不走了,也没有异常,似乎在等待服务端写数据 if ( !handler.getResult( bis ) ) { throw new Exception( "It is not demand treatable." ); } if ( logger.isLoggable( Level.FINER ) ) { logger.finer( "All messages were received." ); } } finally { try { if ( bis != null ) { bis.close(); bis = null; } } catch ( IOException e ) { if ( bis != null ) { try { bis.close(); bis = null; } catch ( IOException ioe ) { if ( logger.isLoggable( Level.FINEST ) ) { logger.finest( "The input stream cannot close." ); } } } } } } import org.xml.sax.helpers.DefaultHandler; public class MonitorXMLHandler extends DefaultHandler { private SAXParser parser = null; ... // 解析xml public boolean getResult( InputStream is ) throws Exception { if ( message == null || is == null ) { return false; } if ( logger.isLoggable( Level.FINEST ) ) { logger.finest( "The analysis of the message begins." ); } //到此处就不往下走了. parser.parse( is, this ); if ( logger.isLoggable( Level.FINEST ) ) { logger.finest( "The analysis of the message finished." ); } return true; } .... } public void startTimeoutCheck() { //判断超时 if (超时) { bis.close(); bis = null; connection.disconnect(); connection = null; } } 另外我用的JDK1.4,没有使用jdk1.5里的HttpURLConnection 的设置超时的新函数. 声明:ITeye文章版权属于作者,受法律保护。没有作者书面许可不得转载。
推荐链接
|
|
返回顶楼 | |