为了账号安全,请及时绑定邮箱和手机立即绑定

HttpURLConnection 问题

HttpURLConnection 问题

慕妹3242003 2019-03-14 18:15:40
为什么 String key = DigestUtils.md5Hex(conn.getInputStream()); 使用后,后面就不能用了,难道必须要两次 HttpURLConnection conn = (HttpURLConnection) url.openConnection(); 吗?    @Test    public void test() {        try {            URL url = new URL("http://www.baidu.com/img/270_fbe71c0815a61fd81c5b89573a002f38.png");            HttpURLConnection conn = (HttpURLConnection) url.openConnection();            conn.setRequestMethod("GET");// 声明请求方式            conn.setConnectTimeout(6 * 1000);// 设置连接超时            conn.setRequestProperty("User-Agent", "Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; Maxthon;)");            conn.setRequestProperty("Accept-Encoding", "identity");                        if (conn.getResponseCode() == 200) {                String key = DigestUtils.md5Hex(conn.getInputStream());                System.out.println(key);                                BufferedImage img = ImageIO.read(conn.getInputStream());                int width = img.getWidth();                int height = img.getHeight();                System.out.println(width);                System.out.println(height);                            }        } catch (Exception e) {            e.printStackTrace();        }    }
查看完整描述

2 回答

?
慕雪6442864

TA贡献1812条经验 获得超5个赞

输入流在读取的时候,读取之后的数据就不会再次被读取(有些流可以通过设置Position的位置重复读取,这里不考虑),所以你需要将输入流中的内容读取到一个byte[]缓存起来,以重复使用


查看完整回答
反对 回复 2019-04-16
?
慕码人8056858

TA贡献1803条经验 获得超6个赞

因为输入流用完一次后,当前位置就走到流的末尾了,当然读不到数据了。

建议你在第一次使用前,用mark()方法标记一下,在第二次使用前用reset方法重置到开始位置。

试试看行不行。


查看完整回答
反对 回复 2019-04-16
  • 2 回答
  • 0 关注
  • 635 浏览

添加回答

举报

0/150
提交
取消
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号