导读目录
- InetAddress类
- URLDecoder和URLEncoder
Java为网络支持提供了java.net包,该包下的URL和URLConnection等类提供了以编程方式访问Web服务的功能,而URLDecoder和URLEncoder则提供了普通字符串和application/x-www-form-urlencoder MIME字符串相互转换
1.InetAddress类
InetAddress类是Java包装用来表示IP地址的高级表示。几乎所有的Java网络相关的类都和它有关系,例如:serversocket,socket,URL,DataGramSocket,DataGRamPacket等
它代表IP地址,没有构造器,提供了静态方法类获取实例
static InetAddress getByAddress(byte[] addr);//根据原始的IP地址来获取对应的InetAddresss实例
static InetAddress getByName(String host); //根据主机名获取对应的InetAddress
static InetAddress getByAddress(String host, byte[] addr);
InetAddress提供了如下的方法来获取其实例中封装的IP地址和主机名:
String getCanonicalHostName(); //获取此IP地址的全限定域名,即计算计的全名
String getHostAddress(); //返回该实例对应的IP地址的字符串
String getHostName();//返回此IP地址的主机名
static InetAddress getLocalHost(); //返回本机IP地址对应InetAddress实例
boolean isReachable(int timeout); //测试某一个InetAddress对应的主机是否可达, timeout参数是最长的测试时间
2.URLDecoder和URLEncoder
URLDecoder和URLEncoder用于完成普通字符串和application/x-www-form-urlencoded MIME字符串之间的相互转换
URLDecoder
static String decode(String s, String enc); //将MIME字符串转换为普通字符串(我们能看懂的), enc受支持字符编码的名称
URLEncoder
static String encode(String s, String enc); //将普通字符串(我们能看懂的)转换为MIME字符串
3.URL、URLConnection、URLPermission(Java8新增的)
URL(Uniform Resource Locator)对象代表同一资源定位器,它包含一个可打开到达特定资源的输入流。可将URL理解为URI的特例。
URL地址:protocol://host:port/resourceName
URI(Uniform Resource Identifiers)对象代表一个统一资源标识符,它不能定位任何资源,其唯一作用就是解析,
(1)URL
URL提供多个构造器,
URL(String spec); //根据资源文件的路径(可以是网络路径、计算计上的文件路径)
提供的方法:
String getFile();
String getHost();
String getPath();
int getPort();
String getProtocol();
String getQuery();//返回该URL的查询字符串部分
URLConnection openConnection(); //返回一个URLConnection对象,代表与URL所引用的远程对象的连接
InputStream openStream(); //打开与此URL的连接,并返回一个可用于读取该URL资源的InputStream
(2)URLConnection
URLConnection
|
HttpURLConnection
JarURLConnection
抽象类URLConnection是所有类别代表和一个URL的应用程序之间的通信链路的父类。这个类的实例可以用于读取和写入URL引用的资源。一般来说,创建连接到URL是一个多步骤的过程:
(1)通过URL对象的openConnection()方法来创建URLConnection对象
(2)设置URLConnection的参数和普通请求属性
(3)如果只是发送GET请求,则使用connect()方法建立和远程资源之间的实际连接即可,
如果是发送POST请求,则需要获取URLConnection实例对应的输出流(通过getOutputStream()来获取)来发送请求参数
(4)远程资源变为可用,程序可以访问远程资源的头字段或通过输入流(通过getInputStream()来获取)读取远程资源的数据
建立和远程资源之间的实际连接之前,程序可以通过如下方法来设置请求头字段:
void setAllowUserInteraction(boolean allowuserinteraction);//设置该URLCOnnection的allowUserInteraction请求头字段的值
void setDoInput(boolean doinput);//设置该URLCOnnection的doInput请求头字段的值
void setDoOutput(boolean dooutput);//设置该URLCOnnection的doOutput请求头字段的值
void setIfModifiedSince(long ifmodifiedsince);//设置该URLCOnnection的ifModifiedSince字段的值
void setUseCaches(boolean usecaches);//设置该URLCOnnection的useCaches请求头字段的值
abstract void connect();//如果此连接尚未建立,则打开此url引用的资源的通信链路
void setRequestProperty(String key, String value);//设置通用头字段,如"accept", "/"
void addRequestProperty(String key, String value); //该URLCOnnection的key请求头字段增加为value值,该方法不会覆盖原请求头字段的值,而是将新值追加到原请求头字段中
InputStream getInputStream();//获取该URLConnection对应的输入流,用于获取URLConnection响应的内容
OutputStream getOutputStream();////获取该URLConnection对应的输出流,用于向URLConnection发送请求参数
注意:如要既要使用输入流读取URLConnection相应的内容,又要使用输出流发送请求参数,则一定要先使用输出流,在使用输入流