网址讲解与URL类使用案例

一、网址详解

网址的组成部分:

通信协议://域名:端口号/虚拟路径?参数列表#锚点

通信协议:

  • 传输速率控制
  • 传输编码控制
  • 出错控制

域名:

  • ip地址的别名
    • ip地址:是计算机在互联网中的唯一标识(公网ip)
  • DNS服务商
    • 在浏览器中输入网址,会首先访问dns服务商,dns服务商会返回该域名对应的ip地址,随后浏览器通过ip访问。

端口号:

  • 范围:0~65535

    http协议访问时,可以忽略端口号,自动寻找80

    https协议访问时,也可以忽略端口号,自动寻找443

参数列表(重要):

  • 访问网络时,给服务器发送的参数内容。
  • 参数列表由多个参数组成,参数与参数之间使用&连接
  • 每一个参数又由参数名称和参数内容

例:www.baidu.com/s?wd=腾讯视频

二、URL类概述及使用案例

统一资源定位符(Uniform Resource Locator)

在万维网上(world wide web)每一个信息和资源都有统一且唯一的地址。

标准使用流程:

//1. 创建一个URL类对象
URL url = new URL("网址");
//2. 通过URL类的对象url打开网络连接,并得到连接对象conn
URLConnection conn = url.openConnection();
//3. 通过连接对象,得到用于读取网页内容的输入流(字节流)
InputStream is = conn.getInputStream();
//4. 将上述的字节流is 装饰为字符流, 后将字符流再装饰为一次读取一行的字符流
BufferedReader br = new BufferedReader(new InputStreamReader(is));
//5. 通过字符流br,读取一行内容,并将内容存储到变量text中
String text = br.readLine();
//6. 将读取到的内容text 输出显示到控制台
System.out.println(text);

案例一、疫情数据读取与分析:

package com.demut.tasks;

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.net.URL;
import java.net.URLConnection;

public class YQDate {
    public static void main(String[] args) throws IOException {
        URL url = new URL("https://zaixianke.com/yq/all");//注:数据来源于开课吧平台
        URLConnection conn = url.openConnection();
        InputStream is = conn.getInputStream();
        BufferedReader br = new BufferedReader(new InputStreamReader(is, "utf-8"));
        String text = br.readLine();
        System.out.println(text);
    }
}

运行结果:(此处未显示完全)

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-g3Ox0h7E-1597580018055)(URL.assets/image-20200814185837109.png)]

案例二、与图灵机器人交流:

package com.demut.tasks;

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.net.URL;
import java.net.URLConnection;
import java.net.URLEncoder;

public class Turing {
    public static void main(String[] args) throws IOException {
        String para = URLEncoder.encode("北京天气怎么样","UTF-8");
        URL url = new URL("https://api.jisuapi.com/iqa/query?appkey=62958a3a6ef3c56d&question=" + para);//数据来源于开课吧平台
        URLConnection conn = url.openConnection();
        InputStream is = conn.getInputStream();
        BufferedReader br = new BufferedReader(new InputStreamReader(is, "UTF-8"));
        String text = br.readLine();
        System.out.println(text);
    }
}

运行结果:(此处未显示完全)

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-LKVq15Vd-1597580018057)(URL.assets/image-20200814190111429.png)]

三、乱码的处理

计算机存储的都是数字

编码表:ASCII (65-A、66-B、67-C、97-a)

简体中文国标系列编码:GBK GB2312 GB18030

万国码:UTF-8

处理代码如下:在字节流装饰为字符流时指定字符集(依照目标网页编码而定)。

BufferedReader br = new BufferedReader(new InputStreamReader(is,"gb2312"));

参数乱码的处理:

将发送给服务器的中文进行URL编码即可
URL编码:将中文转换为%+英文字母+阿拉伯数字

String para = URLEncoder.encode("中文文字","UTF-8");
  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值