JavaSE---基本网络支持
1、Java为网络支持提供了java.net包,该包下的URL和URLConnection等类提供了 以编程方式访问WEB服务 的功能;
2、URLDecoder、URLEncoder提供了 普通字符串 和 application/x-www-form-urlencoded MIME字符串 相互转换的静态方法;
3、【InetAddress】
1.1 Java使用InetAddress代表IP地址,InetAddress有2个子类:Inet4Address、Inet6Address
1.2 InetAddress没有提供构造器, 获取实例 使用2个静态方法:
InetAddress getByName(String host); 根据主机获取对应的InetAddress对象;
InetAddress getByAddresss(byte[] address); 根据原始IP地址获取对应的InetAddress对象;
InetAddress getLocalHost(); 获取本机IP地址对应的InetAddress实例;
1.3 方法:
String getCanonicalHostName(); 获取此IP地址的全限定域名;
String getHostAddress(); 返回此InetAddress对象的IP地址字符串;
String getHostName(); 获取此IP地址的主机名;
boolean isReachable(int time); 测试是否可到达该地址;
4、【使用URLDecoder、URLEncoder】
1.1 URLDecoder、URLEncoder用于将 普通字符串 和 application/x-www-form-urlencoded MIME字符串 相互转换;
1.2 application/x-www-form-urlencoded MIME字符串:
在搜索引擎搜索包含中文的关键字时,访问的URL后面中文会变成类似乱码的东西,这就是application/x-www-form-urlencoded MIME字符串;
1.3 【URLEncoder】
方法:
String encode(String s,String env); 将中文转换为application/x-www-form-urlencoded MIME字符串(s代表要转换的中文,env代表使用的编码格式);
【URLDecoder】
方法:
String decode(String s,String env); 将application/x-www-form-urlencoded MIME字符串转换为中文(s代表要转换的字符串,env代表使用的编码格式);
package com.an.net; import java.net.URL;
import java.net.URLConnection;
import java.net.URLDecoder;
import java.net.URLEncoder; public class URLTest { public static void main(String[] args)throws Exception{
String encodeString=URLEncoder.encode("你好","UTF-8");
//encodeString=%E4%BD%A0%E5%A5%BD
System.out.println(encodeString); String decode=URLDecoder.decode(encodeString,"UTF-8");
//decode=你好
System.out.println(decode); URL url=new URL("https://baike.baidu.com/item/%E4%BD%A0%E5%A5%BD/32416?fr=aladdin");
String file=url.getFile();
//file=/item/%E4%BD%A0%E5%A5%BD/32416?fr=aladdin
System.out.println(file);
String host=url.getHost();
//host=baike.baidu.com
System.out.println(host);
String path=url.getPath();
//path=/item/%E4%BD%A0%E5%A5%BD/32416
System.out.println(path);
int port=url.getPort();
System.out.println(port);
String protocol=url.getProtocol();
//protocol=https
System.out.println(protocol);
String query=url.getQuery();
//query=fr=aladdin
System.out.println(query);
URLConnection urlConnection =url.openConnection();
urlConnection.getOutputStream();
}
}
5、【使用URL、URLConnection】
1.1 【URL】
URL对象 代表统一资源定位器,是指向互联网资源的指针;
URL由 协议名://主机:端口/资源 组成;
方法:
String getFile(); 获取此URL的资源名;
String getHost(); 获取此URL的主机名;
String getPath(); 获取此URL的路径部分;
int getProt(); 获取此URL的端口;
String getProtocol(); 获取此URL的协议名;
String getQuery(); 获取此URL的查询字符串部分;
URLConnection openConnection();
返回一个URLConnection对象,表示到应用程序和URL之间的通信链接;
程序可通过该URLConnection对象向URL发送请求,读取URL的资源;
InputStream openStream(); 打开与此URL的连接,并返回一个用于读取该URL资源的InputStream;
1.2 远程请求网络资源【创建一个和URL的连接,并发送请求、读取此URL所引用的资源】
1.1.1 调用URL的openConnection方法获取URLConnection对象;
1.1.2 设置URLConnection的参数和普通属性;
1.1.3 GET请求,直接URLConnection实例调用connect方法即可创建连接;
POST请求,获取URLConnection实例对应的输出流来发送请求参数;
1.1.4 读取远程资源等
package com.an.net; import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.net.URL;
import java.net.URLConnection; /**
* get请求
*/
public class GetRequestTest { public static void main(String[] args){
BufferedReader bufferedReader=null;
try {
URL url=new URL("https://baike.baidu.com/item/%E4%BD%A0%E5%A5%BD/32416?fr=aladdin");
URLConnection urlConnection =url.openConnection();
urlConnection.setRequestProperty("accept","*/*");
urlConnection.setRequestProperty("connection","Keep-Alive");
urlConnection.setRequestProperty("user-agent","Mozilla/5.0 (Macintosh; Intel Mac OS X 10_13_4) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/71.0.3578.98 Safari/537.36");
urlConnection.connect();
bufferedReader=new BufferedReader(new InputStreamReader(urlConnection.getInputStream()));
String s=null;
while ((s=bufferedReader.readLine())!=null){
System.out.println(s.trim());
}
}catch (Exception e){
e.printStackTrace();
}finally {
try {
if (bufferedReader!=null){
bufferedReader.close();
}
}catch (IOException e){
e.printStackTrace();
} }
}
}
package com.an.net; import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.io.PrintWriter;
import java.net.URL;
import java.net.URLConnection; /**
* post请求
*/
public class PostRequestTest { private static String params="fr=aladdin"; public static void main(String[] args){
PrintWriter printWriter=null;
BufferedReader bufferedReader=null;
try {
URL url=new URL("https://baike.baidu.com/item/%E4%BD%A0%E5%A5%BD/32416");
URLConnection urlConnection =url.openConnection();
urlConnection.setRequestProperty("accept","*/*");
urlConnection.setRequestProperty("connection","Keep-Alive");
urlConnection.setRequestProperty("user-agent","Mozilla/5.0 (Macintosh; Intel Mac OS X 10_13_4) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/71.0.3578.98 Safari/537.36");
//POST请求必须设置
urlConnection.setDoOutput(true);
urlConnection.setDoInput(true);
//获取urlConnection对应的输出流
printWriter=new PrintWriter(urlConnection.getOutputStream());
//发送POST请求参数
printWriter.write(params);
printWriter.flush();
bufferedReader=new BufferedReader(new InputStreamReader(urlConnection.getInputStream()));
String s=null;
while ((s=bufferedReader.readLine())!=null){
System.out.println(s.trim());
}
}catch (Exception e){
e.printStackTrace();
}finally {
try {
if (bufferedReader!=null){
bufferedReader.close();
}
if (printWriter!=null){
printWriter.close();
}
}catch (Exception e){
e.printStackTrace();
}
} }
}
JavaSE---基本网络支持的更多相关文章
- 【Ansible 文档】【译文】网络支持
Networking Support 网络支持 Working with Networking Devices 使用网络设备 自从Ansible 2.1开始,你现在可以使用成熟模型 - 编写 play ...
- java网络编程基础——基本网络支持
基本网络支持 java.net包主要为网络编程提供支持. 1.InetAddress InetAddress类代表IP地址,还有两个子类:Inet4Address.Inet6Address. pack ...
- C#.NET 大型通用信息化系统集成快速开发平台 4.1 版本 - 客户端多网络支持
客户端可以支持灵活的,中间层连接选择,由于我们系统的定位架构大型信息系统的,所以全国各地,甚至国外的用户也会有,所以需要支持全网络配置,只要配置了中间层,可以选择连接哪个中间层的服务程序.客户端可以进 ...
- 网络支持IPV6地址测试校验与思考
概述 大背景:随着移动端的快速扩张,互联网的规模越来越广阔,早于2011年耗尽的IPV4地址越来越无法满足互联网的网络地址需求,IPV6地址推广进入快车道.实际情况:近期公司应上级部门邀请对公司的主域 ...
- JavaSE——TCP网络编程(二)
ServerSocket 类与Socket 类的不同用法: ServerSocket类: 创建一个ServerSocket类,同时在运行该语句的计算机的指定端口处建立一个监听服务,如: Serv ...
- 10 - JavaSE之网络编程
网络编程 网络通信协议分层思想 为什么要分层呢?因为整个网络协议非常复杂,要涉及到方方面面的知识,而且还有对底层硬件的操作,利用分层的思想,我们可以将复杂的通信协议分割成一层层的形式,上一层可以调用下 ...
- Java中的网络支持InetAddress&URL
针对网络通信的不同层次,Java提供的网络功能有四大类 InetAddress:用于标识网络上的硬件资源.(说白了就是IP地址的相关信息) URL:统一资源定位符,通过URL可以直接读取或写入网络上的 ...
- javase的网络编程(InetAddress,UDP,TCP,URL,Socket,DatagramSocket)
通过一段时间对java网络编程相关内容的学习,写下这篇随笔,对这一部分的知识进行梳理和总结. 网络编程 一.网络编程三要素: IP地址:网络会给每个联网的主机分配一个数字的编码地址,该地址就是IP地址 ...
- QEMU支持的网络模式
网络是现代计算机系统不可或缺的一部分,QEMU也对虚拟机提供丰富的网络支持.qemu-kvm中主要给客户机提供了如下4种不同模式的网络. (1)基于网桥(Bridge)的虚拟网卡 (2)基于NAT(N ...
随机推荐
- Linux_服务器_03_xxx is not in the sudoers file.This incident will be reported.的解决方法
1.切换到root用户下,怎么切换就不用说了吧,不会的自己百度去. 2.添加sudo文件的写权限,命令是:chmod u+w /etc/sudoers 3.编辑sudoers文件vi /etc/sud ...
- JSP的优势 和劣势 与php的比较
一 jsp的 优势 与劣势 由于JSP页面的内置脚本语言是基于Java编程语言的,而且所有的JSP页面都被编译成为Java Servlet,JSP页面就具有Java技术的所有好处,包括健壮的存储管理和 ...
- Ubuntu——查看内存和CPU情况
查看内存及cpu使用情况的命令:top 也可以安装htop工具,这样更直观,安装命令如下:sudo apt-get install htop安装完后,直接输入命令:htop
- ASCII字符点阵字库的制作和使用
转自:http://blog.csdn.net/exbob/article/details/6532772 开发环境: Win7,Eclipse,MinGW 1.生成ASCII字符文件 ASCII编码 ...
- 0003_Linux基础之常用命令
1.pwd:查看当前所在目录 2.cd :切换目录 3.ls:查看当前目录下的文件及文件夹: 4.ls -l :列出当前目录下文件及详细信息 drwxr-xr-x 第一个字符为d则 ...
- UVaLive 4254 Processor (二分+优先队列)
题意:有n个任务,每个任务有三个参数,r,d,w,表示该任务必须在[r,d]之间执行,工作量是w,处理器执行速度可以变化,当执行速度是s的时候, 一个工作量是w的任务需要需要的执行时间是w/s个工作单 ...
- HDU - 5878 2016青岛网络赛 I Count Two Three(打表+二分)
I Count Two Three 31.1% 1000ms 32768K I will show you the most popular board game in the Shanghai ...
- Open-source Tutorial - NLog
1. Installing NLog 使用 NuGet 程序包管理器安装 NLog.如何使用 NuGet? 遇到问题:我的项目是 .Net Framework 4.0 平台的,虽然 NLog 说明中是 ...
- Linear Algebra - Determinant(基础)
1. 行列式的定义 一阶行列式: \[ \begin{vmatrix} a_1 \end{vmatrix} = a_1 \] 二阶行列式: \[ \begin{vmatrix} a_{11} & ...
- 如何运用多阶构建编写优雅的Dockerfile
导读 Kubernetes要从容器化开始,而容器又需要从Dockerfile开始,本文将介绍如何写出一个优雅的Dockerfile文件. 文章主要内容包括: Docker容器 Dockerfile 使 ...