Java中用HttpURLConnection发起HTTP请求需正确配置连接、设置方法、处理流并关闭资源;它轻量但需手动管理细节,如超时设置、URL编码、异常处理及流关闭。
Java 中用 HttpURLConnection 发起简单 HTTP 请求,核心是正确配置连接、设置请求方法、处理输入输出流,再记得关闭连接。它不依赖第三方库,但需要手动管理细节,稍繁琐却很轻量。
通过 URL.openConnection() 获取连接对象后,需显式转为 HttpURLConnection,并设置关键属性:
setRequestMethod("GET") 或 "POST" 指定方法setConnectTimeout() 和 setReadTimeout()
避免无限等待(单位毫秒)setDoOutput(true)
setRequestProperty("User-Agent", "...") 模拟浏览器访问GET 请求通常只需打开输入流读响应。URL 中的参数应提前拼接到地址里(如 "https://api.example.com/data?id=123"):
connect() 建立连接(也可省略,首次读写时自动触发)int code = connection.getResponseCode();,2xx 表示成功connection.getInputStream() 读取响应体;若返回 4xx/5xx,改用 getErrorStream()
POST 需要写入请求体,并告知服务端数据格式:
setDoOutput(true) 允许写入setRequestProperty("Content-Type", "application/x-www-form-urlencoded")
getOutputStream(),写入类似 "name=张三&age=25" 的字符串(注意 URL 编码)URLEncoder.encode(value, "UTF-8") 编码HttpURLConnection 不会自动释放底层 socket,容易引发连接堆积:
InputStream/OutputStream)和连接本身都应在 finally 块中关闭IOException 和 ProtocolException 等常见异常HttpURLConnection 本身不实现 AutoCloseable,需手动关连接)基本上就这些。虽然不如 OkHttp 或 HttpClient 简洁,但理解 HttpURLConnection 能帮你更扎实地掌握 Java 网络通信底层逻辑。