java中用urlconnection读取网页需先openconnection()创建连接,配置user-agent、超时等请求头,再通过inputstreamreader指定编码读取响应,其自动处理重定向但http错误码需手动检查。

Java 中通过 URLConnection 读取网页数据,核心是打开连接、配置请求、获取输入流并读取响应内容。它比 HttpURLConnection 更底层,但使用简单,适合基础 HTTP GET 请求。
创建并打开 URLConnection 连接
用 URL 对象的 openConnection() 方法获取连接对象,注意它默认不发起网络请求,只是准备连接:
- 调用前可设置超时(避免阻塞)、User-Agent(绕过部分网站反爬)等属性
-
setDoInput(true)必须设为 true(默认已是 true),表示允许读取响应 - 不需要手动调用
connect()—— 第一次读取输入流时会自动连接
配置请求头与超时参数
很多网站会检查请求头,不设置可能返回 403 或空内容:
conn.setRequestProperty("User-Agent", "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36")-
conn.setConnectTimeout(5000):连接建立最长等待时间(毫秒) -
conn.setReadTimeout(5000):从连接中读取数据的最大等待时间
读取响应内容(支持中文不乱码)
响应体默认按平台编码读取,容易乱码。应优先从响应头或响应内容中提取字符集:
- 先尝试
conn.getContentEncoding()(如 gzip,需解压) - 再查
conn.getContentType(),解析charset=xxx(例如text/html; charset=UTF-8) - 若未指定,默认用
UTF-8(现代网页主流)或ISO-8859-1回退 - 用
InputStreamReader指定编码包装conn.getInputStream(),再用BufferedReader逐行读取
处理重定向与异常
URLConnection 默认自动处理 301/302 重定向(setInstanceFollowRedirects(true),默认 true),但要注意:
- 重定向后原始响应头丢失,如需追踪跳转链,需手动禁用自动重定向并自己处理
- 必须捕获
IOException(网络不通、超时、服务器错误等)和MalformedURLException(URL 格式错误) - HTTP 错误码(如 404、500)不会抛异常,需调用
conn.getResponseCode()判断
Java免费学习笔记:立即使用
解锁 Java 大师之旅:从入门到精通的终极指南











