前言
java的http编程
11之前和11之后不同
使用原生和使用HttpClient也不同
方式还是有好几种的
这里先记录第一种:
jdk1.8,原生
import java.io.IOException;
import java.io.InputStream;
import java.net.HttpURLConnection;
import java.net.URL;
import java.util.List;
import java.util.Map;
public class HttpTest {
public static InputStream get(String uri) throws IOException {
URL url = new URL(uri);
HttpURLConnection conn = (HttpURLConnection) url.openConnection();
conn.setRequestMethod("GET");
conn.setUseCaches(false);
conn.setConnectTimeout(5000); // 请求超时5秒
// 连接并发送HTTP请求:
conn.connect();
// 判断HTTP响应是否200:
if (conn.getResponseCode() != 200) {
throw new RuntimeException("bad response");
}
// 获取所有响应Header:
Map<String, List<String>> map = conn.getHeaderFields();
for (String key : map.keySet()) {
System.out.println(key + ": " + map.get(key));
}
// 获取响应内容:
return conn.getInputStream();
}
public static InputStream post(String uri) throws IOException {
URL url = new URL(uri);
HttpURLConnection conn = (HttpURLConnection) url.openConnection();
conn.setRequestMethod("POST");
conn.setUseCaches(false);
conn.setConnectTimeout(5000); // 请求超时5秒
conn.connect();// 获取连接
// 判断HTTP响应是否200:
if (conn.getResponseCode() != 200) {
throw new RuntimeException("bad response");
}
// 获取所有响应Header:
Map<String, List<String>> map = conn.getHeaderFields();
for (String key : map.keySet()) {
System.out.println(key + ": " + map.get(key));
}
return conn.getInputStream();
}
public static void main(String[] args) {
// get test
try {
InputStream input = HttpTest.get("https://passport.baidu.com/v2/?login");
byte[] data = new byte[1024];
while(input.read(data) != -1) {
System.out.println(new String(data));
}
} catch (IOException e) {
System.out.println(e.getMessage());
}
// post test
try {
InputStream input = HttpTest.post("https://passport.baidu.com/v2/?login");
byte[] data = new byte[1024];
while(input.read(data) != -1) {
System.out.println(new String(data));
}
} catch (IOException e) {
System.out.println(e.getMessage());
}
}
}