网址
网址的组成部分:
协议://域名:端口号/虚拟路径?参数#锚点
协议是什么??
用于对传输速率,传输编码、出错等进行规范的一套协议
http协议:不安全的超文本传输协议:传输网页,端口号:80
https协议:安全的超文本协议,默认端口:443
什么是域名?
IP地址的别名 192.168.1.1
端口号:0-65535
虚拟路径:通过虚拟文件路径的方式,来定位文件
参数:访问网址时,发送给服务器的数据
参数的组成:由多个名称和值组成,名称与值之间使用=连接,多个名称与值通过&分割
锚点:在网页中建立关键的点,使网页可以快速的定位到这些锚点的位置
URL类
使用步骤:
// 准备网址,创建一个URL的对象
URL u1= new URL("网址");
//建立连接,通过网址u1,打开网络连接,并得到连接对象conn
URLConnection conn = u1.openConnection();
// (获取数据传输的流),通过连接对象conn,获取输入流
InputStream is = conn.getInputStream();
//将输入流 is,转化为一次能读取一行的 缓冲字符输入流
BufferedReader br = new BufferedReader(new InputStreamReader(is));
// 读取内容,一行一行的读取
String text = br.readLine();
// 关闭流
br.close();
使用的代码:
聊天机器人API
package com.qf.chapter10;
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 Demo2 {
public static void main(String[] args) throws Exception {
//将发送到服务器的中文,进行url编码
String contentString = URLEncoder.encode("脑筋急转弯","utf-8");
URL u1= new URL("https://api.jisuapi.com/iqa/query?appkey=62958a3a6ef3c56d&question="+contentString);
URLConnection conn = u1.openConnection();
InputStream is = conn.getInputStream();
BufferedReader br = new BufferedReader(new InputStreamReader(is,"UTF-8"));
String text = br.readLine();
System.out.println(text);
br.close();
}
}
输出结果:
{"status":0,"msg":"ok","result":{"type":"标准回复","content":"题目:2夫妻家里有6个小孩.老爸叫老大叫大家来吃饭.老4叫老3.老3叫老5.老5叫老大,老大叫老2,老2叫老4,老4叫老6,还有老几没来?????????<\/br>输入a得到答案,输入n看下一条,输入q退出","relquestion":{"0":"脑筋急转弯"}}}