Java大学生就业特训营_URL类标准使用流程

时间:2022-11-05 07:15:01



编程环境:Eclipse 2019-03

1,标准使用流程

//1. 创建一个URL类的对象url 
URL url = new URL("网址");

//2. 通过URL类的对象url打开网络连接 , 并得到连接对象conn
URLConnection conn = url.openConnection();

//3. 通过连接对象 , 得到用于读取网页内容的输入流 is
InputStream is = conn.getInputStream();

//4. 将上述的字节流is 装饰为字符流 , 将字符流再装饰为一次能读取一行的字符流br
BufferedReader br = new BufferedReader(new InputStreamReader(is));

//5. 通过字符流br,读取一行内容,并将内容存储到变量text中
String text = br.readLine();

//6. 可以将读取到的内容text 输出显示到控制台
System.out.println(text);

 

2,可能遇到的问题

1,语句下出现红色波浪线?

  • 可能是因为没有导入相应的包,将鼠标悬停上方,选择相应的io.*或net.*包点击添加即可;
  • 导包后,部分语句需要抛出异常,将鼠标悬停上方,根据提示直接抛出即可;

 

2,URL有输入参数,怎样添加?

  • 字符串拼接:“网址”+“?”+“key1=value1” + “&” + “key2=value2” + “&” + ……

 

3,输入参数为中文,出现乱码怎么处理?

  • 比如搜索栏中的网址为

String para = URLEncoder.encode("植物大战僵尸", "UTF-8"); URL url = new URL("https://www.baidu.com/s?ie=utf-8&f=8&rsv_bp=1&rsv_idx=1&tn=baidu&wd=" + para);

 

4,从服务器获取的值为乱码该如何处理?

  • 在字节流转换为字符流时,加上编码标准"UTF-8"即可;

BufferedReader br = new BufferedReader(new InputStreamReader(is, "UTF-8"));

 

3,短信发送完整代码

package com.kaikeba.demo;

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

public class Demo2 {

public static void main(String[] args) throws IOException {
// 导包时选择io*或net*

String para = URLEncoder.encode("恭喜你,作业已完成!验证码是:666666。如非本人操作,请忽略本短信!【开课吧新职课】", "UTF-8");

// 1,创建URL类的对象url
URL url = new URL("https://api.jisuapi.com/sms/send?"+"appkey=62958a3a6ef3c56d" +
"&mobile=你的电话号码" + "&content="+para);

// 2,通过url对象获取链接,并连接到URLConnection对象conn
URLConnection conn = url.openConnection();

// 3,通过链接对象获得用于读取网页内容的输入流is
InputStream is = conn.getInputStream();

// 4,将字节流装饰为字符流,再将字符流装饰为能读取一行的字符流br
BufferedReader br = new BufferedReader(new InputStreamReader(is, "UTF-8"));

// 5,通过字符流读取一行数据存放在String变量text中
String text = br.readLine();

// 6,输出
System.out.println(text);
}

}

运行结果如下:

{"status":0,"msg":"ok","result":{"accountid":15790,"msgid":"159616775433015720448","count":1}}