首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > JAVA > Java相关 >

一个奇怪的有关问题,关于HttpURLConnection

2011-11-16 
一个奇怪的问题,关于HttpURLConnection问题是这样的,在a.jsp页面调用以下sendAndReceive方法,传入一个Stri

一个奇怪的问题,关于HttpURLConnection
问题是这样的,在a.jsp页面调用以下sendAndReceive方法,传入一个String srcUrl。这个srcUrl是通过一个配置文件获得的,且只会初始化一次。
然后这个方法返回null,报:java.io.IOException: Read channel closed
奇怪的事情来了,刷新该页面,也就是重新调用该方法一次(不会再次初始化配置文件,因为有判断),就能返回成功的信息。

另外,把这个方法的调用写在另外一个页面 b.jsp,然后a.jsp只初始化配置文件,b.jsp调用这个方法,居然也成功了,但是写在一起就报错,但只要再次刷新页面就不会出错,我就是想不明白啊。

按说这个方法调用二次就可以成功,那我在初始化配置文件后,连续调用这个方法2次(同一个jsp),还是报一样的错误,且只能通过其他页面调用或者本页面刷新,才能成功....郁闷

Java code
public String sendAndReceive(String srcUrl)    {        HttpURLConnection connection = null;        InputStream in = null;        try        {            URL url = new URL(srcUrl);            connection = (HttpURLConnection)url.openConnection();            connection.setRequestProperty("User-Agent", "Mozilla/MSIE");            int contentLen = connection.getContentLength();            in = connection.getInputStream();            if(contentLen <= 0)            {                contentLen = bufLen;                int offset = 0;                do                {                    int len = in.read(buffer, offset, contentLen - offset);                    if(len <= 0)                        break;                    offset += len;                } while(true);                contentLen = offset;            } else            {                if(contentLen > bufLen)                {                    buffer = new byte[contentLen];                    bufLen = contentLen;                }                int offset = 0;                do                {                    int len = in.read(buffer, offset, contentLen - offset);                    if(len <= 0)                        break;                    offset += len;                } while(true);                contentLen = offset;            }            String resMsg = connection.getHeaderField(0);            if(resMsg.toLowerCase().indexOf("ok") < 0)            {                return null;            } else            {                connection.disconnect();                in.close();                String content = new String(buffer, 0, contentLen);                return content;            }        }        catch(Exception e)        {            if(connection != null)                connection.disconnect();            if(in != null)                try                {                    in.close();                }                catch(IOException ioexception) { }            e.printStackTrace();            return null;        }    }


忘了说了,这个是银行的交易对账单下载。

[解决办法]
connection.disconnect();
去掉它试试
[解决办法]
看不懂的哦.
[解决办法]
connection.disconnect(); 

去掉了能好吗

热点排行