美文网首页
Java网络编程 - 02 的基本网络支持

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

作者: ql2012jz | 来源:发表于2017-09-10 11:11 被阅读47次
    导读目录
    • 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相应的内容,又要使用输出流发送请求参数,则一定要先使用输出流,在使用输入流

    相关文章

      网友评论

          本文标题:Java网络编程 - 02 的基本网络支持

          本文链接:https://www.haomeiwen.com/subject/srmzjxtx.html