• 网络基础 URL


    一、用JAVA实现URL 
      在JAVA中,Java.net包里面的类是进行网络编程的,其中java.net.URL类和java.net.URLConection类使编程者方便地利用URL在Internet上进行网络通信。

    1、创建URL对象
      URL类有多种形式的构造函数:

    package com.my.socket;
    
    import java.net.MalformedURLException;
    import java.net.URL;
    import java.net.UnknownHostException;
    
    public class ScocketTestt {
    
        public static void main(String[] args) throws UnknownHostException, MalformedURLException {
        
            //(1) URL ( String url)
            //url代表一个绝对地址,URL对象直接指向这个资源,如:
            URL urll1=new URL("http://www.cqwu.edu.cn");
    
            //(2) URL ( URL baseURL , String relativeURL)
            //其中,baseURL代表绝对地址,relativeURL代表相对地址。如:
            URL urll2 = new URL("http://www.cqwu.edu.cn");
            URL lib1 = new URL(urll2 , "library / library.asp");
    
            //(3) URL ( String protocol , String host , String file)
            //其中,protocol代表通信协议,host代表主机名,file代表文件名。如:
            new URL ("http" , "www.cqwu.edu.cn", "/ test / test.asp");
    
            //(4) URL ( String protocol , String host , int port , String file)
            URL lib2 = new URL ("http" , "www.cqwu.edu.cn", 80 , "/ test / test.asp");                                
    
        }
    
    }

    2、获取URL对象的属性
      getDefaultPort(): 返回默认的端口号。
      getFile(): 获得URL指定资源的完整文件名。
      getHost(): 返回主机名。
      getPath(): 返回指定资源的文件目录和文件名。
      getPort(): 返回端口号,默认为-1。
      getProtocol(): 返回表示URL中协议的字符串对象。
      getRef(): 返回URL中的HTML文档标记,即#号标记。
      getUserInfo: 返回用户信息。
      toString: 返回完整的URL字符串。

            url1.getHost();//获取主机
            url1.getPort();//如果没有指定端口号,根据协议不同使用默认端口。此时getPort()方法的返回值为 -1
            url1.getPath();//获取文件路径
            url1.getFile();//文件名,包括文件路径+参数
            url1.getRef();//相对路径,就是锚点,即#号后面的内容
            url1.getQuery();//查询字符串,即参数

    有两种方法可以用来访问Internet。一是利用URL类的openStream()方法;二是使用openConnection()方法创建一个URLConnection类的对象。

    其中,方法openStream()与指定的URL建立连接并返回InputStream类的对象,以从这一连接中读取数据。

    //使用URL读取网页内容
    //创建一个URL实例
    URL url =new URL("http://www.baidu.com");
    InputStream is = url.openStream();//通过openStream方法获取资源的字节输入流
    InputStreamReader isr =newInputStreamReader(is,"UTF-8");//将字节输入流转换为字符输入流,如果不指定编码,中文可能会出现乱码
    BufferedReader br =newBufferedReader(isr);//为字符输入流添加缓冲,提高读取效率
    String data = br.readLine();//读取数据
    while(data!=null){
    System.out.println(data);//输出数据
    data = br.readerLine();
    }
    br.close();
    isr.colose();
    is.close();

    上例首先创建URL对象url,并在其基础上打开输入流获取InputStreamReader对象,再由此对象创建BufferedReader对象br,从br中读取数据即可得到url所指定的资源文件。
      上面的openStream()方法只能读取网络资源,若要既能读取又能发送数据,则要用到URL类的openConnection()方法来创建一个 URLConnection类的对象,此对象在本地机和URL指定的远程节点建立一条HTTP协议的数据通道,可进行双向数据传输。
      类URLConnection提供了很多设置和获取连接参数的方法,最常用到的是getInputStream()和getOutputStream()方法,如:
      URL sum=new URL("http://java.sum.com/cgi-bin/backwards");
      URLConnection suncon=buaa.openConnection();
      sumcon.setDoOutput(true);
      DataInputStream dis=new DataInputStream(suncon.getInputStream());
      PrintStream ps=new PrintStream(suncon.getOutputStream());
      String str=dis.readLine();
      ps.println("来自客户机的信息:.......");

  • 相关阅读:
    Array对象---添加或删除数组中的元素->splice()
    微信小程序-文本作用域
    微信小程序-模块化
    属性动画的核心方法:ValueAnimator.ofInt(int... values)
    关于原生+WebView js交互、数据传输问题
    Beam Search快速理解及代码解析
    vue项目启动报错 spawn cmd ENOENT errno
    TortoiseGit提交每次都需要输入账号密码的解决办法
    Grpc.Core.RpcException: Status(StatusCode=DeadlineExceeded, Detail="Deadline Exceeded")
    公司限制网络,不能访问b站..etc,怎么办?搞起来
  • 原文地址:https://www.cnblogs.com/lukelook/p/11236332.html
Copyright © 2020-2023  润新知