Java网络编程 - 02 的基本网络支持

导读目录
  • InetAddress类
  • URLDecoder和URLEncoder

Java为网络支持提供了java.net包,该包下的URLURLConnection等类提供了以编程方式访问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相应的内容,又要使用输出流发送请求参数,则一定要先使用输出流,在使用输入流

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • Spring Cloud为开发人员提供了快速构建分布式系统中一些常见模式的工具(例如配置管理,服务发现,断路器,智...
    卡卡罗2017阅读 135,242评论 19 139
  • 经验:1.在网络端接收数据后写入本地时要用write(byte[],0,len),不要用write(byte[])...
    123yuan123阅读 408评论 0 2
  • 老师我目前未婚,是银行文员,地处陕西延安。想知道未来事业如何,家庭事业怎么样? 生肖马坤造:庚午,戊寅,癸丑,乙卯...
    陈语轩国学大讲堂阅读 886评论 0 1
  • 我国传统的清明节大约始于周代,已有二千五百多年的历史。清明最开始是一个很重要的节气,清明一到,气温升高,正是春...
    闫杰阅读 298评论 0 0
  • zip函数接受任意多个(包括0个和1个)序列作为参数,返回一个tuple列表。 详细实例: 1.zip函数的基本运...
    MiracleJQ阅读 328评论 0 0