精华内容
下载资源
问答
  • URL和URI(一)URL

    千次阅读 2018-09-27 15:47:24
    URL类 public URL(String url) throws MalformedURLException public URL(String protocol, String host, int port, String file) throws MalformedURLException public URL(String protocol, String host, ...

    URL类

    public URL(String url) throws MalformedURLException
    public URL(String protocol, String host, int port, String file) throws MalformedURLException
    public URL(String protocol, String host, String file) throws MalformedURLException
    public URL(URL base,String relative) throws MalformedURLException
    

    使用哪个构造函数取决于你有哪些信息以及信息的形式;

    从字符串构造URL

    最简单的URL构造函数只接受一个字符串形式的绝对URL作为唯一的参数:

    public URL(String url) throws MalformedURLException在这里插入代码片
    

    例如:

    try {
    			URL url = new URL("http://www.baidu.com");
    		} catch (MalformedURLException e) {
    			System.out.println(e);
    		}
    

    由组成部分构造URL

    还可以通过指定协议、主机名和文件来构建一个URL:

    public URL(String protocol, String host, String file) throws MalformedURLException
    

    这个构造函数将端口设置为-1,所以会使用该协议的默认端口。file参数应当以斜线开头,包括路径、文件名和可选的片段标识符。有可能会忘记最前面的斜线,这是一个很常见的错误。与所有URL构造函数一样,它可能会抛出MalformedURLException异常。

        try {
    			URL url = new URL("http","www.eff.org","/blueribbon.html#intro");
    		} catch (MalformedURLException e) {
    			System.out.println(e);
    		}
    

    这会创建一个URL对象,指向http://www.eff.org/blueribbon.html#intro,并使用HTTP默认的端口(80)。
    在很少见的情况下,默认端口不正确时,还允许使用一个int显式指定端口:

       try {
    			URL url = new URL("http","www.eff.org","8000",/blueribbon.html#intro");
    		} catch (MalformedURLException e) {
    			System.out.println(e);
    		}
    

    构造相对URL

    这个构造函数根据相对URL和基础URL构建一个绝对URL:

    public URL(URL base,String relative) throws MalformedURLException
    

    在这里插入图片描述

       try {
    			URL url1 = new URL("http://www.ibiblio.org/javafaq.index.html");
    			URL url2 = new URL(url1, "mailinglists.html");
    		} catch (MalformedURLException e) {
    			System.out.println(e);
    		}
    

    从URL获取数据

    URL类有几个方法可以从URL获取数据:

    public final InputStream openStream() throws java.io.IOException
    public URLConnection openConnection() throws java.io.IOException
    public URLConnection openConnection(Proxy proxy) throws java.io.IOException
    public final Object getContent() throws java.io.IOException
    public final Object getContent(Class[] classes)throws java.io.IOException
    

    在这里插入图片描述

    public final InputStream openStream() throws java.io.IOException

    在这里插入图片描述

       try {
    			URL url1 = new URL("http://www.baidu.com");
    			InputStream stream = url1.openStream();
    			int c;
    			while((c = stream.read())!= -1)
    			{
    				System.out.write(c);
    			}
    		} catch (IOException e) {
    			System.out.println(e);
    		}
    

    控制台会输出源代码:
    在这里插入图片描述

    public URLConnection openConnection() throws java.io.IOException

    openConnection()方法为指定的URL打开一个socket,并返回一个URLConnection对象。URLConnection表示一个网络资源的打开的连接。如果调用失败,则openConnection()会抛出一个IOException异常;

      try {
    			URL url1 = new URL("http://www.baidu.com");
    			URLConnection uc = url1.openConnection();
    			InputStream stream = uc.getInputStream();
    			//从连接读取			
    		} catch (IOException e) {
    			System.out.println(e);
    		}
    

    在这里插入图片描述
    这个方法还有一个重载版本,可以指定通过哪个代理服务器传递连接:

    public URLConnection openConnection(Proxy proxy) throws java.io.IOException
    

    public final Object getContent() throws java.io.IOException

    在这里插入图片描述

    URL url1 = new URL("http://www.baidu.com");
    Object object = url1.getContent();
    //将Object强制转换为适当的类型
    //处理这个Object
    

    在这里插入图片描述
    下载一个对象:

    URL url1 = new URL("http://www.baidu.com");
    Object object = url1.getContent();
    System.out.println(object.getClass().getName());
    

    在这里插入图片描述
    具体的类可能因为Java的版本不同而有所区别:
    在这里插入图片描述

    public final Object getContent(Class[] classes)throws java.io.IOException

    getContent()方法的这个重载版本允许你选择希望将内容作为哪个类返回。这个方法尝试以第一种可用的格式返回URL的内容:

                URL url1 = new URL("http://www.baidu.com");
    			Class<?>[] types = new Class[3];
    			types[0] = String.class;
    			types[1] = Reader.class;
    			types[2] = InputStream.class;
    			Object object = url1.getContent(types);
    

    如果内容处理器知道如何返回资源的一个字符串表示,它就会返回一个String。如果它不知道如何返回资源的字符串表示,则返回Reader。倘若它也不知道如何将资源表示为一个读取器,那么它将返回InputStream。必须用instanceof检查返回的对象的类型:

    在这里插入图片描述

    分解URL

    URL由以下5部分组成:

    • 模式,也称为协议
    • 授权机构
    • 路径
    • 片段标识符
    • 查询字符串

    在这里插入图片描述
    public String getProtocol()
    getProtocol()方法返回一个String,其中包含URL的模式(如"http"、“https"或"file”):

    URL url1 = new URL("http://www.baidu.com");
    System.out.println(url1.getProtocol());    //输出http
    

    public String getHost()
    getHost()方法返回一个String,其中包含URL的主机名:

    URL url1 = new URL("http://www.baidu.com");
    System.out.println(url1.getHost());   //输出www.baidu.com
    

    public int getPort()
    在这里插入图片描述

    URL url1 = new URL("http://www.baidu.com");
    System.out.println(url1.getPort());   //输出-1
    

    public int getDefaultPort()
    在这里插入图片描述

    URL url1 = new URL("http://www.baidu.com");
    System.out.println(url1.getDefaultPort());   //输出80
    

    public String getFile()
    getFile()方法返回一个String。从主机名后的第一个斜线(/)一直到片段标识符#之前的字符,被认为是文件部分:

    URL url1 = new URL("http://www.baidu.com/test.html?name=yd&sex=man#");
    System.out.println(url1.getFile());   //输出/test.html?name=yd&sex=man
    

    public String getPath()
    与 getFile()相似,但它返回的String中不包含查询字符串:

    URL url1 = new URL("http://www.baidu.com/test.html?name=yd&sex=man#");
    System.out.println(url1.getPath());    //输出/test.html
    

    public String getRef()
    返回URL的片段标识符部分。如果URL没有片段标识符,则这个方法返回null:

    URL url1 = new URL("http://www.baidu.com/test.html?name=yd&sex=man#34546");
    System.out.println(url1.getRef());   //输出34546
    

    public String getQuery()
    返回URL的查询字符串。如果URL没有查询字符串,则这个方法返回null:

    URL url1 = new URL("http://www.baidu.com/test.html?name=yd&sex=man#34546");
    System.out.println(url1.getQuery());   //输出name=yd&sex=man
    

    public String getUserInfo()
    返回URL的用户信息。如果URL没有用户信息,则这个方法返回null:

    URL url1 = new URL("http://admin@www.baidu.com/test.html?name=yd&sex=man#34546");
    System.out.println(url1.getUserInfo());   //输出admin
    

    public String getAuthority()
    getAuthority()方法会以URL中的形式返回授权机构,可能有用户信息和端口,也可能没有:

    URL url1 = new URL("http://admin@www.baidu.com/test.html?name=yd&sex=man#34546");
    System.out.println(url1.getAuthority());   //输出admin@www.baidu.com
    

    相等性和比较

    在这里插入图片描述
    在这里插入图片描述
    URL类还有一个sameFile()方法,可以检查两个URL是否指向相同的资源:

    public boolean sameFile(URL other)
    

    在这里插入图片描述

    比较

    URL有三个方法可以将一个实例转换为另外一种形式,分别是toString()、toExternalForm()和toURI()。
    在这里插入图片描述
    最好toURI()方法将URL对象转换为对应的URI对象:

     public URI toURI() throws URISyntaxException
    

    以上只是学习所做的笔记!!!
    书籍:Java网络编程

    展开全文
  • 常见URL协议

    千次阅读 2020-08-25 10:11:05
    常见URL协议: http(s):// 超文本传输协议 ftp:// 传输文件协议 file:// 获取本地文件协议 mailto:// 发邮件协议 tel:// 打电话协议 sms:// 发短信协议 注意:浏览器会自动补全协议头,但在做客户端的网络开发...

    常见URL协议:

    http(s)://   超文本传输协议
    
    ftp://         传输文件协议
    
    file://         获取本地文件协议
    
    mailto://    发邮件协议
    
    tel://          打电话协议
    
    sms://        发短信协议
    

    注意:浏览器会自动补全协议头,但在做客户端的网络开发时,必须加上正确的协议头。

    safari和chrome的网页调试快捷键:cmd+opt+i


    URL格式

    定义:在www上,每一信息资源都有统一的且在网上唯一的地址,该地址就叫URL(Uniform Resource Locator,统一资源定位符),它是www的统一资源定位标志,就是指网络地址。

    语法

    URL由三部分组成:资源类型、存放资源的主机域名、资源文件名。
    URL的一般语法格式为(带方括号[]的为可选项):protocol 😕/ hostname[:port] / path / [;parameters][?query]#fragment

    格式说明

    protocol(协议)

    指定使用的传输协议,下表列出protocol属性的有效方案名称。最常用的是HTTP协议,它是目前www中应用最广的协议。

    协议名称描述
    file资源是本地计算机上的文件。格式 file:///,注意后边应是三个斜杠。
    ftp通过FTP访问资源。格式 FTP://
    gopher通过Gopher协议访问该资源
    http通过HTTP访问该资源。 格式 HTTP://
    https通过安全的HTTPS访问该资源。格式 HTTPS://
    mailto资源为电子邮件地址,通过SMTP访问。格式 mailto:
    MMS通过支持MMS(流媒体)协议的播放该资源。 (代表软件:Windows Media Player)格式 MMS://
    ed2k通过支持ed2k(专用下载链接)协议的P2P软件访问该资源。(代表软件:电驴)格式 ed2k://
    Flashget通过支持Flashget(专用下载链接)协议P2P软件访问该资源。(代表软件:快车)格式 Flashget://
    thunder通过支持thunder(专用下载链接)协议的P2P软件访问该资源。(代表软件:迅雷)格式 thunder://
    news通过NNTP访问该资源

    hostname(主机名)

    是指存放资源的服务器的域名系统(DNS)主机名或IP地址。有时,在主机名前也可以包含连接到服务器所需的用户名和密码(格式:username:password@hostname)。

    port(端口号)

    整数,可选,省略时使用方案的默认端口,各种传输协议都有默认的端口号,如http的默认端口号为80。如果输入时省略,则使用默认默认端口号。有时出于安全或其他考虑,可以在服务器上对端口进行重定义,即采用非标准端口号,此时,URL中就不能省略端口号这一项。

    path(路径)

    由零或多个“/”符号隔开的字符串,一般用来表示主机上的一个目录或文件地址。

    parameters(参数)

    这是用于指定特殊参数的可选项。

    query(查询)

    可选,用于给动态网页(如使用CGI、ISAPI、PHP/JSP/ASP/NET等技术制作的网页)传递参数,可有多个参数,用“&”符号隔开,每个参数的名和值用“=”符号隔开。

    fragment(信息片段)

    字符串,用于指定网络资源中的片段。例如一个网页有多个名词解释,可使用fragment直接定位到某一名词解释。


    url的各个组成部分

    字面量参数可选值:

    参数返回值
    hashURL的锚(从"#"开始之后的内容)
    protocol协议http、https、ftp… 等
    hostname域名
    port端口号
    host完整的主机名,包含域名和端口号
    origin完整的主机路径,包含协议、域名、端口
    pathname主机名之后的部分
    search查询字符串
    query查询字符串构成对象
    hrefURL全名
    展开全文
  • Java获取URL链接的文件类型

    千次阅读 2019-12-05 16:22:56
    获取 Url 链接的文件类型有三种方法(前两种不准确,推荐第三种): 通过 url 后缀名获取,这种不用说,直接是静态文件链接还好说,但其它很多情况获取不准确,因为很多资源都是通过请求获取的,像...

    获取 Url 链接的文件类型有三种方法(前两种不准确,推荐第三种):

    1. 通过 url 后缀名获取,这种不用说,直接是静态文件链接还好说,但其它很多情况获取不准确,因为很多资源都是通过请求获取的,像http://www.baidu.com/,实际对应的 Html,行不通;
    2. 通过文件流的前面几个字节来判断类型获取:
      String extension = HttpURLConnection.guessContentTypeFromStream(inputStream);
      但很多情况也识别不出来。
    3. 最后一种比较准确。即用 ContentType 获取文件后缀名,代码如下:
    // response 为获取的 url 响应
    String value = response.getEntity().getContentType().getValue();
    MimeTypes allTypes = MimeTypes.getDefaultMimeTypes();
    MimeType mimeType = allTypes.forName(value);
    String extension = mimeType.getExtension();
    

    MimeTypes 和 MimeType 是下面的类库中的类。

            <dependency>
                <groupId>org.apache.tika</groupId>
                <artifactId>tika-core</artifactId>
                <version>1.22</version>
            </dependency>
    
    展开全文
  • HttpClient 通过资源URL下载资源

    千次阅读 2019-12-05 16:13:04
    HttpClient 通过资源URL下载资源 使用富文本编辑器写文章什么的,从第三方拷贝过来的图文,里面的资源内容都是第三方的,如果第三方删除该资源,导致该文章也无法访问,故需要把文章中的第三方资源通过http下载到...

    HttpClient 通过资源URL下载资源

    使用富文本编辑器写文章什么的,从第三方拷贝过来的图文,里面的资源内容都是第三方的,如果第三方删除该资源,导致该文章也无法访问,故需要把文章中的第三方资源通过http下载到本地服务器,永久保存。
    用到了以下三种方法:

    1、纯IO写文件

    /**
     * 根据url下载文件,保存到filepath中
     * @param url
     * @param filepath
     * @return
     */
    public static void download(String url, String filepath) {
        try {
            HttpClient client = HttpClients.createDefault();
            HttpGet httpGet = new HttpGet(url);
            //设置请求
            /**
             * setConnectTimeout:设置连接超时时间,单位毫秒。
             *
             * setConnectionRequestTimeout:设置从connect Manager(连接池)获取Connection 超时时间,单位毫秒。这个属性是新加的属性,因为目前版本是可以共享连接池的。
             *
             * setSocketTimeout:请求获取数据的超时时间(即响应时间),单位毫秒。 如果访问一个接口,多少时间内无法返回数据,就直接放弃此次调用。
             */
            RequestConfig requestConfig = RequestConfig.custom()
                    .setConnectTimeout(5000).setConnectionRequestTimeout(1000)
                    .setSocketTimeout(3000).build();
            httpGet.setConfig(requestConfig);
            HttpResponse response = client.execute(httpGet);
            HttpEntity entity = response.getEntity();
    
            InputStream is = entity.getContent();
            File file = new File("C:\\Users\\XXX\\Downloads\\io");
            FileOutputStream fileout = new FileOutputStream(file);
            /**
             * 根据实际运行效果 设置缓冲区大小
             */
            byte[] buffer = new byte[cache];
            int ch = 0;
            while ((ch = is.read(buffer)) != -1) {
                fileout.write(buffer, 0, ch);
            }
            is.close();
            fileout.flush();
            fileout.close();
    
        } catch (Exception e) {
            e.printStackTrace();
        }
    
    }
    

    注:由于该资源是网页使用,此处没有考虑文件类型,无文件格式后缀的文件,浏览器已然可以正常解析

    2、使用HttpEntity自带工具

    import java.io.InputStream;
    import java.nio.file.Files;
    import java.nio.file.StandardCopyOption;
        /**
         * 使用httpClient自带的工具类
         * @param url
         */
    public static void downloadByWriteTo(String url){
        try {
            RequestConfig requestConfig = RequestConfig.custom()
                    .setConnectTimeout(5000)
                    .setConnectionRequestTimeout(1000)
                    .setSocketTimeout(3000).build();
            CloseableHttpClient client = HttpClientBuilder.create()
                    .setDefaultRequestConfig(requestConfig).build();
            CloseableHttpResponse response = client.execute(new HttpGet(new URL(url).toURI()));
            HttpEntity entity = response.getEntity();
            File file = new File("C:\\Users\\XXX\\Downloads\\WriteTo");
            entity.writeTo(new FileOutputStream(file));
        } catch (Exception e) {
            e.printStackTrace();
        }
    }
    

    3、使用nio工具类拷贝

    public static void downloadByFilesCopy(String url){
       try {
           HttpClient client = HttpClients.createDefault();
           HttpResponse response = client.execute(new HttpGet(url));
           HttpEntity entity = response.getEntity();
           File file = new File("C:\\Users\\XXX\\Downloads\\FilesCopy");
           Files.copy(entity.getContent(),file.toPath(), StandardCopyOption.REPLACE_EXISTING);
       } catch (Exception e) {
           e.printStackTrace();
       }
    }
    

    以上操作均需要导入HttpClient 包

    <!-- https://mvnrepository.com/artifact/org.apache.httpcomponents/httpclient -->
    <dependency>
    	<groupId>org.apache.httpcomponents</groupId>
    	<artifactId>httpclient</artifactId>
    	<version>4.5.6</version>
    </dependency>
    
    展开全文
  • 手把手教你利用爬虫爬网页(Python代码)

    万次阅读 多人点赞 2019-05-14 14:34:48
    网络爬虫按照系统结构和实现技术,大致可以分为以下几种类型:通用网络爬虫、聚焦网络爬虫、增量式网络爬虫、深层网络爬虫。实际的网络爬 虫系统通常是几种爬虫技术相结合实现的。 搜索引擎(Search Engine),例如...
  • 1,使用方法: switch (Scheme.ofUri(imageUri)) { case HTTP: case HTTPS: case FILE: case CONTENT: case ASSETS: case DRAWABLE: case UNKNOWN: default: ... enum Sche
  • REST资源URL设计

    千次阅读 2018-08-26 08:39:13
    资源URL设计  在前面已经提到过,统一接口约束中的第一条子约束就是每个资源都拥有一个资源标识。在正确地辨识出了一个资源之后,我们就需要为这些资源分配其所对应的URI。一个资源所对应的URI可能有多种表示...
  • 语法:URL由三部分组成:资源类型、存放资源的主机域名、资源文件名。 URL语法:protocol://hostname[:port]/path/[;parameters][?query]#fragment protocol(协议) 指定使用的传输协议: file资源是本地计算机...
  • 网址(URL)构成理解。
  • 我想自己搭建一个离线下载服务器,怎样能通过一个URL获取这个文件的文件名和文件类型 比如http://www.baidu.com/a/b/c/index.php?a=1&b=2这样子的 还比如url中有中文编码%B7%E5%A3%AB.mp4这种的 还比如http://www,...
  • Web基础之使用URL访问资源

    千次阅读 2016-11-07 18:26:52
    在一些框架中经常看到使用URL访问项目中的资源,这篇文章简单的梳理了一下这个URL的相关内容
  • 一、确保为web项目,创建WebConfig 实现WebMvcConfigurer ...type: - jpg - png 参考 springboot通过设置addResourceHandlers拦截请求访问本地资源踩坑实战 springboot通过URL直接获取图片 SpringMVC官方文档(英文)
  • Python爬虫入门

    千次阅读 多人点赞 2018-05-31 16:24:20
    所谓网页抓取,就是把URL地址中指定的网络资源从网络流中读取出来,保存到本地。 在Python中有很多库可以用来抓取网页,其中urllib2库比较经典和常用的一个爬虫库。urllib2在python3中更名为urllib.request ...
  • 统一资源定位符 (Uniform Resource Locator, URL) 是用于完整地描述Internet上网页和其他资源的地址的一种标识方法。 Internet上的每一个网页都具有一个唯一的名称标识,通常称之为URL地址,这种地址可以是本地磁盘...
  • JS正则判定常见URL

    千次阅读 2018-12-16 11:50:24
    统一资源定位符(或称统一资源定位器/定位地址、URL地址等[1],英语:Uniform Resource Locator,常缩写为URL),有时也被俗称为网页地址(网址)。如同在网络上的门牌,是因特网上标准的资源的地址(Ad...
  • JAVA上百实例源码以及开源项目

    千次下载 热门讨论 2016-01-03 17:37:40
     Java 3DMenu 界面源码,有人说用到游戏中不错,其实平时我信编写Java应用程序时候也能用到吧,不一定非要局限于游戏吧,RES、SRC资源都有,都在压缩包内。 Java zip压缩包查看程序源码 1个目标文件 摘要:Java源码...
  • 这是我的cookie完全照着打的代码还报错 然后看着报错提示我想的是我没有指定访问方式可能就默认是GET方式,于是我就重写了doGet()方法让它以POST方式访问,如图 就可以了。 网上查了好久千篇一律都对我的问题没有...
  • 接口测试(一)常见接口类型

    万次阅读 2019-04-19 16:24:33
    介绍接口测试之前,本文先介绍一下接口的概念及常见的接口类型。 接口是指外部系统与系统之间以及内部各子系统之间的交互点。包括外部接口、内部接口,内部接口又包括:上层服务与下层服务接口、同级接口。 常见web...
  • URL格式

    万次阅读 2017-11-18 12:25:44
    参考了百度百科,说一下URL同志的格式问题:URL的定义:在WWW上,每一信息...URL的组成部分URL由三部分组成:资源类型,存放资源的主机域名,资源文件名。URL的一般语法格式:(带方括号[]的为可选项):protocol :// ho
  • HTTP——资源URL、连接

    千次阅读 2014-03-04 15:08:21
    作为WEB开发人员,HTTP协议是必不可少的一道菜,HTTP协议的目的很明确,通过HTTP搬运游弋在网上的各种资源,达到共享,其核心思想只有四个字请求响应,此协议看上去...放到HTTP中来,是这样几个概念:媒体类型URL(U
  • String url = request.getUrl().toString(); //todo:计算url的hash String md5URL = YUtils.md5(url); //读取缓存的html页面 File file = new File(appCacheDir + File.separator + md5URL); if ...
  • URL详解

    万次阅读 多人点赞 2017-04-05 20:07:36
    一:URL举例 就以下面这个URL为例,介绍下普通URL的各部分组成 http://www.aspxfans.com:8080/news/index.asp?boardID=5&ID=24618&page=1#name 从上面的URL可以看出,一个完整的URL包括以下几部分: 1....
  • 移动web开发笔记

    万次阅读 2016-05-15 20:12:27
    range、color、 button和hidden类型的输入元素则不能使用required,因为这几种输入类型几乎都有默认值。 autofocus HTML5的autofocus属性可以让表单在加载完成时就有一个表单域被默认聚焦(或选中),以便于用户...
  • URL过滤技术

    万次阅读 2019-06-06 13:15:56
    URL过滤功能可以对用户访问的URL进行控制,允许或禁止用户访问某些网页资源,达到规范上网行为的目的。URL过滤还可以通过引用时间段或用户/组等配置项,实现针对不同时间段或不同用户/组的URL访问控制,达到更加精细...
  • 常见网络攻击类型

    万次阅读 多人点赞 2017-09-14 11:37:17
    SiteScript,跨站脚本攻击,是Web程序中常见的漏洞,XSS属于被动式且用于客户端的攻击方式,所以容易被忽略其危害性。其原理是攻击者向有XSS漏洞的网站中输入(传入)恶意的HTML代码,当其它用户浏览该网站时,这段...
  • GET和POST的区别

    万次阅读 多人点赞 2019-08-04 17:16:20
    浏览器原因就不说了,服务器是因为处理长 URL 要消耗比较多的资源,为了性能和安全(防止恶意构造长 URL 来攻击)考虑,会给 URL 长度加限制。 POST 方法会产生两个TCP数据包? 有些文章中提到,post 会将 header...
  • URLURL基本知识

    千次阅读 多人点赞 2017-07-31 14:07:34
    一、URL-统一资源定位器web浏览器通过URL从web服务器请求页面; 当点击某个html页面中的链接时,对应的标签指向万维网上的一个地址; 一个统一的资源定位器(URL)用于定位万维网上的文档; 一个网站的格式为: ...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 440,236
精华内容 176,094
关键字:

url常见的资源类型