Skip to content

Http

599字约2分钟

javahttp

2024-10-24

Http

URL(统一资源定位器)

1.URL 代表一个统一资源定位符

image-20211018194231512

URI = Universal Resource Identifier 统一资源标志符 URL = Universal Resource Locator 统一资源定位符 URN = Universal Resource Name 统一资源名称

2.URI是抽象的定义,不管用什么方法表示,只要能定位一个资源,就叫URI,本来设想的的使用两种方法定位:1,URL,用地址定位;2,URN 用名称定位。

举个例子:去村子找个具体的人(URI),如果用地址:某村多少号房子第几间房的主人 就是URL, 如果用身份证号+名字 去找就是URN了。

结果就是 目前WEB上就URL流行开了,平常见得URI 基本都是URL。

image-20211018084311202

URLConnection

URLEncode

URLDecode

(基于http协议表单get与post的区别)get与Post的区别?

安全性不同 get不够安全,提交的参数 会明文显示在地址栏和浏览历史中

提交的机制不同 get像外卖,post像快递,post会给你发个有数据到达的通知,让你获取数据。get的效率高一些。

传输的数据量不一样。get理论上2k,post理论无限制,取决于服务端的软件。

get的请求是幂等的,post不是。

分类分类描述
1**信息,服务器收到请求,需要请求者继续执行操作
2**成功,操作被成功接收并处理
3**重定向,需要进一步的操作以完成请求
4**客户端错误,请求包含语法错误或无法完成请求
5**服务器错误,服务器在处理请求的过程中发生了错误

URL类的使用

// 定义一个url
URL url = new URL(String urlstr);
// 建立HTTP通信
HttpURLConnection connection = (HttpURLConnection) url.openConnection();
// 设置连接方式:get
connection.setRequestMethod("GET");
// 设置连接主机服务器的超时时间:15000毫秒
connection.setConnectTimeout(5000);
// 设置读取远程返回的数据时间:60000毫秒
connection.setReadTimeout(6000);
// 发送请求
connection.connect();
// 通过connection连接,获取输入流
if (connection.getResponseCode() == 200) {
                inputStream = connection.getInputStream();
                // 封装输入流,并指定字符集
                bufferedReader = new BufferedReader(new InputStreamReader(inputStream, StandardCharsets.UTF_8));
                // 存放数据
                StringBuilder sbf = new StringBuilder();
                String temp;
                while ((temp = bufferedReader.readLine()) != null) {
                    sbf.append(temp);
                    sbf.append(System.getProperty("line.separator"));
                }
                result = sbf.toString();
            }
        } catch (IOException e) {
            e.printStackTrace();
        }

第三方工具:

HttpClient

OkHTTP

Jsoup java爬虫工具