欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

Chapter02 网络(二) 获取Web数据

程序员文章站 2022-03-22 23:21:45
...

URI是统一标识符,URL是统一资源定位符。

Chapter02 网络(二) 获取Web数据

在java类库中,URI类不包含访问资源的任何方法,唯一的作用是解析。

@Test
	public void testURL() throws IOException, URISyntaxException
	{
		//创建URL对象
		URL url=new URL("http://tool.chinaz.com/port/");
		//获取URL的资源内容
		InputStream in=url.openStream();
		//构建Scanner对象,读出资源
		Scanner s=new Scanner(in);
		while(s.hasNext())
		{
			String line=s.nextLine();
			System.out.println(line);
		}
		//对于URI进行分层解析
		String authority=url.getAuthority();
		System.out.println(authority);
		
		int port=url.getPort();
		System.out.println(port);
		
		System.out.println(url.getUserInfo());
		
		System.out.println(url.getHost());
		
		System.out.println(url.getProtocol());
		
		//相对化操作
		URI uri=new URI("http://tool.chinaz.com/port/");
		URI base=new URI("http://tool.chinaz.com/");
		//获取相对uri
		URI relativi=base.relativize(uri);
		System.out.println(relativi);
		
		//获取绝对的uri
	    URI absolute=base.resolve(relativi);
	    System.out.println(absolute);
	}
测试URLConnection:

	@Test
	public void testConnection() throws IOException
	{
		//创建URL对象
		URL url=new URL("http://tool.chinaz.com/port/");
		//调用URL类中的openConnection来获取URLConnection对象		
		URLConnection conneciton=url.openConnection();
		//设置超时连接
		conneciton.setConnectTimeout(100);
		//连接远程资源,除了与服务器建立套接字连接外,该方法还可用于向服务器查询头信息。
		conneciton.connect();
		//内容类型
		String contentType=conneciton.getContentType();
		//返回包含信息头所有字段的标准Map对象
		Map<String,List<String>> heads=conneciton.getHeaderFields();
		for (Map.Entry<String,List<String>> entry : heads.entrySet()) {
			String key=entry.getKey();
			System.out.print("key:"+key+" ");
			List<String> values=entry.getValue();
			String value="";
			for (String temp : values) {
				value+=temp+" ";
			}
			System.out.println("value:"+value);
		}
	}


Chapter02 网络(二) 获取Web数据

使用SMTP发送电子邮件:

由于现在需要实现验证,人工验证显得比较繁琐,这里使用JAVAMail API来进行验证。

Chapter02 网络(二) 获取Web数据