Java网络通讯涉及的基础类
-
网络通讯类所属的包Java.net.*
-
InetAddress类:表示Internet网络地址
-
URLEncoder与URLDecoder类:编码和解码类
cityname="苏州"; cityname = URLEncoder.encode(cityname,"UTF-8");
-
URL类:同一资源定位器
-
URL组成分析
- http://www/runoob.com/index.html?language=cn#j2se
- 协议(protocol):http
- 主机(host:port):www.runoob.com
- 端口号(port):80,以上URL实力未指定端口,应为HTTP下一默认的端口位80
- 文件路径(path):/index.html
- 请求参数(query):language=cn
- 定位位置(fragment):j2se,定位到网页中id属性为j2se的HTML元素位置
- http://www/runoob.com/index.html?language=cn#j2se
-
URL其他函数
-
public String getPath()//返回URL路径部分 public String getQuery()//返回URL查询部分 public String getAuthority()//获取此URL的授权部分 public int getPort()//返回URL端口部分 public int getDafaultPort()//返回协议的默认端口号 public String getProtocol()//返回URL的协议 public String getHost()//返回URL的主机 public String getFile()//返回URL文件名部分 public String getRef()//获取此URL的锚点(也称为“引用”)。 public URLConnection openConnection()throws IOException//打开一个URL链接,并允许客户端访问资源
-
-
-
URLConnection类:URL链接
-
HttpURLConnection类:HttpURLl链接
用URLConnection下载资源
-
创建一个URL连接,并发送请求,读取此URL引用的资源,步骤如下:
- (1)URL.openConnection()创建URLConnection对象
- (2)设置URLConnection的参数和普通请求属性
- (3)如果只是发送GET方式请求,使用connection方法建立和远程资源之间的实际连接即可
- (4)如果需要发送post方式请求,需要获取URLConnection实例对应的输出流发送请求参数。
- 远程资源变为可用,可以访问远程资源的头字段或通过输入流来发送请求参数
-
示例:
private void getInputFromOpenConnection() throws IOException{ URL url = new URL("http://www.baidu.com"); //方式1: //返回一个URLConnection对象,它表示到URL所引用的远程对象的连接。 URLConnection urlConn = url.openConnection(); InputStream in = urlConn.getInputStream();//打开的连接读取的输入流。 //方式2: //打开到此URL的连接并返回一个用于从该连接读入的InputStream //InputStream instream = utl.openStream(); //另一种读取方法 Reader reader = new InputStreamReader(new BudderedInputStream(in)); int ch; while((ch= reader.read())!=-1){ System.out.print((char)ch); } reader.close(); }