Java中的Http和URL
URL(统一资源定位符)
http://www.baidu.com/resource?type=jpg&name=get
- URLConnection类:表示与URL建立的通信连接,URLConnection类的对象使用URL类的openConnection()方法获得
@Test
public void test1() {
try {
String url_location = "http://localhost:8000/user/login?account=test&password=test";
URL url = new URL(url_location);
System.out.println("主机号" + url.getHost());
System.out.println("端口号" + url.getPort());
System.out.println("查询信息" + url.getQuery());
System.out.println("查询路径" + url.getPath());
URLConnection urlConnection = url.openConnection();
Map<String, List<String>> headerFields = urlConnection.getHeaderFields();
System.out.println("响应的头部信息为"+headerFields);
InputStream inputStream = urlConnection.getInputStream();
byte[] len = new byte[1024];
int content;
while ((content = inputStream.read(len)) != -1) {
String s = new String(len, 0, content);
System.out.println(s);
}
} catch (Exception e) {
e.printStackTrace();
}
}
URLConnection
- URLConnection是一个抽象类,表示指向URL指定资源的活动连接。
- URLConnection可以检查服务器发送的首部,并相应的做出回应。它可以设置客户端请求中使用的首部字段。
- URLConnection可以用POST、PUT、GET等方法向服务器发送数据。
直接使用URLConnection
- 构造一个URL对象
- 调用这个对象的openConnection()方法建立连接
- 配置这个URLConnection
- 读取首部字段
- 获得输入流并读取数据
- 获得输出流并写入数据
- 关闭连接
下载数据如下:
@Test
public void test3() {
try {
String url_location = "http://localhost:8000/user/login?account=test&password=test";
URL url = new URL(url_location);
URLConnection urlConnection = url.openConnection();
InputStream inputStream = urlConnection.getInputStream();
File file=new File("download.txt");
FileOutputStream fileOutputStream= new FileOutputStream(file);
byte[] b=new byte[1024];
int content;
while((content= inputStream.read(b))!=-1){
fileOutputStream.write(b,0,content);
}
} catch (Exception e) {
e.printStackTrace();
}
}
JAVA HTTP通信
- POST方式:通过HTTP消息实体发送数据给服务器(不会将明文显示在浏览器地址内),安全性高数据传输大小没有限制。
- GET方式:通过URL的查询字符串传递给服务器参数,以明文显示在浏览器地址,保密性差最多传输2048个字符。
- Get请求一般用在查询(读取资源),效率高,POST请求大多用于注册登录等安全性较高且向数据库中写入数据的操作
POST、GET
public abstract class URLConnection {}
abstract public class HttpURLConnection extends URLConnection {}
public class HttpURLConnection extends java.net.HttpURLConnection {}
@Test
public void test4() {
try {
String url_location = "http://localhost:8000/user/login?account=test&password=test";
URL url = new URL(url_location);
HttpURLConnection urlConnection = (HttpURLConnection) url.openConnection();
urlConnection.setRequestMethod("POST");
urlConnection.setRequestMethod("POST");
}catch(Exception e){
e.printStackTrace();
}
}