java原生http请求的实现是依赖 java.net.URLConnection
post请求的demo
public class Main {
public static void main(String[] args) {
postDemo();
}
/**
* POST请求
*/
public static void postDemo() {
try {
// 请求的地址
String spec = "http://localhost:9090/formTest";
// 根据地址创建URL对象
URL url = new URL(spec);
// 根据URL对象打开链接
HttpURLConnection urlConnection = (HttpURLConnection) url
.openConnection();
// 设置请求方法
urlConnection.setRequestMethod("POST");
// 设置请求的超时时间
urlConnection.setReadTimeout(5000);
urlConnection.setConnectTimeout(5000);
// 传递的数据
String data = "name=" + URLEncoder.encode("aaa", "UTF-8")
+ "&school=" + URLEncoder.encode("bbbb", "UTF-8");
// 设置请求的头
urlConnection.setRequestProperty("Connection", "keep-alive");
urlConnection.setRequestProperty("Content-Type", "application/x-www-form-urlencoded");
urlConnection.setRequestProperty("Content-Length", String.valueOf(data.getBytes().length));
// 发送POST请求必须设置允许输出
urlConnection.setDoOutput(true);
// 发送POST请求必须设置允许输入
urlConnection.setDoInput(true);
//setDoInput的默认值就是true
//获取输出流,将参数写入
OutputStream os = urlConnection.getOutputStream();
os.write(data.getBytes());
os.flush();
os.close();
urlConnection.connect();
if (urlConnection.getResponseCode() == 200) {
// 获取响应的输入流对象
InputStream is = urlConnection.getInputStream();
// 创建字节输出流对象
ByteArrayOutputStream byteArrayOutputStream = new ByteArrayOutputStream();
// 定义读取的长度
int len = 0;
// 定义缓冲区
byte[] buffer = new byte[1024];
// 按照缓冲区的大小,循环读取
while ((len = is.read(buffer)) != -1) {
// 根据读取的长度写入到os对象中
byteArrayOutputStream.write(buffer, 0, len);
}
// 释放资源
is.close();
byteArrayOutputStream.close();
// 返回字符串
String result = new String(byteArrayOutputStream.toByteArray());
System.out.println(result);
} else {
System.out.println("请求失败");
}
} catch (Exception e) {
e.printStackTrace();
}
}
}