# Java中的Http和URL

Java中的Http和URL


URL(统一资源定位符)
http://www.baidu.com/resource?type=jpg&name=get
  1. URLConnection类:表示与URL建立的通信连接,URLConnection类的对象使用URL类的openConnection()方法获得
/**
 * URLConnection
 */
@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();

        //得到连接成功后response中header的内容
        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
  1. URLConnection是一个抽象类,表示指向URL指定资源的活动连接。
  2. URLConnection可以检查服务器发送的首部,并相应的做出回应。它可以设置客户端请求中使用的首部字段。
  3. URLConnection可以用POST、PUT、GET等方法向服务器发送数据。
直接使用URLConnection
  1. 构造一个URL对象
  2. 调用这个对象的openConnection()方法建立连接
  3. 配置这个URLConnection
  4. 读取首部字段
  5. 获得输入流并读取数据
  6. 获得输出流并写入数据
  7. 关闭连接
    下载数据如下:
/**
 * 下载接口数据
 */
@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通信
  1. POST方式:通过HTTP消息实体发送数据给服务器(不会将明文显示在浏览器地址内),安全性高数据传输大小没有限制。
  2. GET方式:通过URL的查询字符串传递给服务器参数,以明文显示在浏览器地址,保密性差最多传输2048个字符。
  3. Get请求一般用在查询(读取资源),效率高,POST请求大多用于注册登录等安全性较高且向数据库中写入数据的操作

POST、GET
public abstract class URLConnection {}
abstract public class HttpURLConnection extends URLConnection {}
public class HttpURLConnection extends java.net.HttpURLConnection {}
/**
 * Http Post、Get请求
 */
@Test
public void test4() {
    try {
        String url_location = "http://localhost:8000/user/login?account=test&password=test";
        URL url = new URL(url_location);
        //在这将urlConnection转换为HttpURLConnection
        HttpURLConnection urlConnection = (HttpURLConnection) url.openConnection();
        //设置方法为POST方式
        urlConnection.setRequestMethod("POST");
        //设置方法为GET方式
        urlConnection.setRequestMethod("POST");
    }catch(Exception e){
        e.printStackTrace();
    }
}
发布了123 篇原创文章 · 获赞 9 · 访问量 3985

猜你喜欢

转载自blog.csdn.net/qq_37248504/article/details/103774284