3.2 初识URL抓包
什么叫 URL ?
答:我么的 文件地址,其实就是 URL。包括 网址。所以 它并不光光 指 网址。
URL 被称为 统一资源定位符(是定位资源的,定位互联网上的某一个资源的。)
举例:https://www.baidu.com/
DNS 域名解析: 具有 把 网址 翻译 成 IP 地址的功能。
所以 你看到的是域名,并不是 解析后的结果。
解析后一般都是这样的:
协议://ip地址:端口/项目名/资源文件
那么 怎么根据 URL 网址,下载 网络的资源呢?
步骤:
- 创建 URL 对象 把 网址 放到对象 参数里。
- 用 url.openConnection(); 打开这个网址 建立 连接,并把它 强转为 HttpURLConnection 类型,存到 一个 HttpURLConnection 对象里面,便于我们 接下来的操作。
- 然后我们 根据 HttpURLConnection 对象.getInputStream() 创建 一个 输入流。
- 然后 再创建个 文件输出流(指定 存储的文件名)
- 通过 byte[] 数组 来存储 HttpURLConnection 对象输入流的所有数据。把这些数据 都写到 文件输出流里。
- 关闭 所有IO流
package www.muquanyu.lesson03;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.net.HttpURLConnection;
import java.net.MalformedURLException;
import java.net.URL;
import java.net.URLConnection;
public class URLDemo {
public static void main(String[] args) throws IOException {
//1. 创建URL 对象
URL url = new URL("https://m801.music.126.net/20210720181056/41e5ea26a4d64f30acf510d40c2a8446/jdyyaac/015a/5259/025a/603087e667e391674ac550a240ab60c5.m4a");
//2. 打开网址建立连接 存到 HttpURLConnection 对象里
HttpURLConnection urlConnection = (HttpURLConnection)url.openConnection();
//3. 创建 输入流
InputStream is = urlConnection.getInputStream();
FileOutputStream fos = new FileOutputStream("哪里都是你.m4a");
byte[] bytes = new byte[1024];
int len = 0;
while((len= is.read(bytes))!=-1)
{
fos.write(bytes,0,len);
}
fos.close();
is.close();
}
}