Java教程
+ -

Java URL处理

2019-09-09 8 0

URL(Uniform Resource Locator)中文名为统一资源定位符,有时也被俗称为网页地址。表示为互联网上的资源,如网页或者FTP地址。

本章节我们将介绍Java是如处理URL的。URL可以分为如下几个部分。

protocol://host:port/path?query#fragment

protocol(协议)可以是 HTTP、HTTPS、FTP 和 File,port 为端口号,path为文件路径及文件名。

HTTP 协议的 URL 实例如下:

http://www.bytekits.com/index.html?language=cn#j2se

URL 解析:

  • 协 议为(protocol):http
  • 主 机为(host:port)http://www.bytekits.com
  • 端 口号为(port): 80 ,以上URL实例并未指定端口,因为 HTTP 协议默认的端口号为 80。
  • 文 件路径为(path):/index.html
  • 请 求参数(query):language=cn
  • 定 位位置(fragment):j2se,定位到网页中 id 属性为 j2se 的 HTML 元素位置 。

URL 类方法

在java.net包中定义了URL类,该类用来处理有关URL的内容。对于URL类的创建和使用,下面分别进行介绍。

java.net.URL提供了丰富的URL构建方式,并可以通过java.net.URL来获取资源。

序号 方法描述
1 public URL(String protocol, String host, int port, String file) throws MalformedURLException. 通过给定的参数(协议、主机名、端口号、文件名)创建URL。
2 public URL(String protocol, String host, String file) throws MalformedURLException 使用指定的协议、主机名、文件名创建URL,端口使用协议的默认端口。
3 public URL(String url) throws MalformedURLException 通过给定的URL字符串创建URL
4 public URL(URL context, String url) throws MalformedURLException 使用基地址和相对URL创建

URL类中包含了很多方法用于访问URL的各个部分,具体方法及描述如下:

序号 方法描述
1 public String getPath() 返回URL路径部分。
2 public String getQuery() 返回URL查询部分。
3 public String getAuthority() 获取此 URL 的授权部分。
4 public int getPort() 返回URL端口部分
5 public int getDefaultPort() 返回协议的默认端口号。
6 public String getProtocol() 返回URL的协议
7 public String getHost() 返回URL的主机
8 public String getFile() 返回URL文件名部分
9 public String getRef() 获取此 URL 的锚点(也称为”引用”)。
10 public URLConnection openConnection() throws IOException 打开一个URL连接,并运行客户端访问资源。

实例

以上实例演示了使用java.net的URL类获取URL的各个部分参数:

URLDemo.java

import java.net.*;
import java.io.*;
public class URLDemo
{
   public static void main(String [] args)
   {
      try
      {
         URL url = new URL("http://www.bytekits.com/index.html?language=cn#j2se");
         System.out.println("URL 为:" + url.toString());
         System.out.println("协议为:" + url.getProtocol());
         System.out.println("验证信息:" + url.getAuthority());
         System.out.println("文件名及请求参数:" + url.getFile());
         System.out.println("主机名:" + url.getHost());
         System.out.println("路径:" + url.getPath());
         System.out.println("端口:" + url.getPort());
         System.out.println("默认端口:" + url.getDefaultPort());
         System.out.println("请求参数:" + url.getQuery());
         System.out.println("定位位置:" + url.getRef());
      }catch(IOException e)
      {
         e.printStackTrace();
      }
   }
}

以上实例编译运行结果如下:

URL 为:http://www.bytekits.com/index.html?language=cn#j2se
协议为:http
验证信息:http://www.bytekits.com
文件名及请求参数:/index.html?language=cn
主机名:http://www.bytekits.com
路径:/index.html
端口:-1
默认端口:80
请求参数:language=cn
定位位置:j2se

URLConnections 类方法

openConnection() 返回一个 java.net.URLConnection。

例如:

  • 如果你连接HTTP协议的URL, openConnection() 方法返回 HttpURLConnection 对象。

  • 如果你连接的URL为一个 JAR 文件, openConnection() 方法将返回 JarURLConnection 对象。

  • 等等…

URLConnection 方法列表如下:

序号 方法描述
1 Object getContent() 检索URL链接内容
2 Object getContent(Class[] classes) 检索URL链接内容
3 String getContentEncoding() 返回头部 content-encoding 字段值。
4 int getContentLength() 返回头部 content-length字段值
5 String getContentType() 返回头部 content-type 字段值
6 int getLastModified() 返回头部 last-modified 字段值。
7 long getExpiration() 返回头部 expires 字段值。
8 long getIfModifiedSince() 返回对象的 ifModifiedSince 字段值。
9 public void setDoInput(boolean input) URL 连接可用于输入和/或输出。如果打算使用 URL 连接进行输入,则将 DoInput 标志设置为 true;如果不打算使用,则设置为false。默认值为 true。
10 public void setDoOutput(boolean output) URL 连接可用于输入和/或输出。如果打算使用 URL 连接进行输出,则将 DoOutput 标志设置为 true;如果不打算使用,则设置为false。默认值为 false。
11 public InputStream getInputStream() throws IOException 返回URL的输入流,用于读取资源
12 public OutputStream getOutputStream() throws IOException 返回URL的输出流, 用于写入资源。
13 public URL getURL() 返回 URLConnection 对象连接的URL

以下实例中URL采用了HTTP 协议。 openConnection 返回HttpURLConnection对象。

URLConnDemo.java

import java.net.*;
import java.io.*;
public class URLConnDemo
{
   public static void main(String [] args)
   {
      try
      {
         URL url = new URL("http://www.bytekits.com");
         URLConnection urlConnection = url.openConnection();
         HttpURLConnection connection = null;
         if(urlConnection instanceof HttpURLConnection)
         {
            connection = (HttpURLConnection) urlConnection;
         }
         else
         {
            System.out.println("请输入 URL 地址");
            return;
         }
         BufferedReader in = new BufferedReader(
         new InputStreamReader(connection.getInputStream()));
         String urlString = "";
         String current;
         while((current = in.readLine()) != null)
         {
            urlString += current;
         }
         System.out.println(urlString);
      }catch(IOException e)
      {
         e.printStackTrace();
      }
   }
}

以上实例编译运行结果如下:

$ javac URLConnDemo.java 
$ java URLConnDemo
.....这里会输出字节流首页(http://www.bytekits.com)的 HTML 内容.....

0 篇笔记 写笔记

Java 多线程编程
Java 给多线程编程提供了内置的支持。 一条线程指的是进程中一个单一顺序的控制流,一个进程中可以并发多个线程,每条线程并行执行不同的任务。多线程是多任务的一种特别的形式,但多线程使用了更小的资源开销。这里定义和线程相关的另一个术语 -进程:一个进程包括由操作系统分配的内存空间,包含一个或多个线程。......
JSONJSON.stringify()
JSON 通常用于与服务端交换数据。在向服务器发送数据时一般是字符串。我们可以使用 JSON.stringify() 方法将 JavaScript 对象转换为字符串。语法JSON.stringify(value[, replacer[, space]]) 参数说明:value:必需, 一个有效的 J......
C# Windows文件系统的操作
C# 允许您使用各种目录和文件相关的类来操作目录和文件,比如 DirectoryInfo 类和 FileInfo 类。DirectoryInfo 类DirectoryInfo 类派生自 FileSystemInfo 类。它提供了各种用于创建、移动、浏览目录和子目录的方法。该类不能被继承。下表列出了 ......
C++ 类访问修饰符
数据封装是面向对象编程的一个重要特点,它防止函数直接访问类类型的内部成员。类成员的访问限制是通过在类主体内部对各个区域标记 public、private、protected 来指定的。关键字 public、private、protected 称为访问修饰符。一个类可以有多个 public、prote......
Java subSequence() 方法
subSequence() 方法返回一个新的字符序列,它是此序列的一个子序列。语法public CharSequence subSequence(int beginIndex, int endIndex)参数beginIndex -- 起始索引(包括)。endIndex -- 结束索引(不包括)。返......
Java intern() 方法
intern() 方法返回字符串对象的规范化表示形式。它遵循以下规则:对于任意两个字符串 s 和 t,当且仅当 s.equals(t) 为 true 时,s.intern() == t.intern() 才为 true。语法public String intern()参数无返回值一个字符串,内容与此......
Java compareToIgnoreCase() 方法
compareToIgnoreCase() 方法用于按字典顺序比较两个字符串,不考虑大小写。语法int compareToIgnoreCase(String str)参数str -- 要比较的字符串。返回值如果参数字符串等于此字符串,则返回值 0;如果此字符串小于字符串参数,则返回一个小于 0 的值......
Java toUpperCase() 方法
toUpperCase() 方法将字符串小写字符转换为大写。语法public String toUpperCase()或public String toUpperCase(Locale locale)参数无返回值字符转换为大写后的字符串。实例public class Test { public......
Java URL处理
URL(Uniform Resource Locator)中文名为统一资源定位符,有时也被俗称为网页地址。表示为互联网上的资源,如网页或者FTP地址。本章节我们将介绍Java是如处理URL的。URL可以分为如下几个部分。protocol://host:port/path?query#fragment......
Java StringBuffer
当对字符串进行修改的时候,需要使用 StringBuffer 和 StringBuilder 类。和 String 类不同的是,StringBuffer 和 StringBuilder 类的对象能够被多次的修改,并且不产生新的未使用对象。StringBuilder 类在 Java 5 中被提出,它和......
Java endsWith() 方法
endsWith() 方法用于测试字符串是否以指定的后缀结束。语法public boolean endsWith(String suffix)参数suffix -- 指定的后缀。返回值如果参数表示的字符序列是此对象表示的字符序列的后缀,则返回 true;否则返回 false。注意,如果参数是空字符串......
C# 字符串(String
在 C# 中,您可以使用字符数组来表示字符串,但是,更常见的做法是使用 string 关键字来声明一个字符串变量。string 关键字是System.String 类的别名。创建 String 对象您可以使用以下方法之一来创建 string 对象:通过给 String 变量指定一个字符串通过使用 S......
C# 队列(Queue)
队列(Queue)代表了一个 先 进先出的对象集合。当您需要对各项进行先进先出的访问时,则使用队列。当您在列表中添加一项,称为 入队,当您从列表中移除一项时,称为 出 队。Queue 类的方法和属性下表列出了 Queue 类的一些常用的 属 性:属性描述 Count获取 Queue 中包含的元素个......
Java toString() 方法
toString() 方法用于返回一个表示指定 char 值的 String 对象。结果是长度为 1 的字符串,仅由指定的 char 组成。语法String toString(char ch)参数ch -- 要转换的字符。返回值返回指定 char 值的字符串表示形式。实例public class T......
C# 排序列表(SortedList)
SortedList 类代表了一系列按照键来排序的 键 /值对,这些键值对可以通过键和索引来访问。排序列表是数组和哈希表的组合。它包含一个可使用键或索引访问各项的列表。如果您使用索引访问各项,则它是一个动态数组(ArrayList),如果您使用键访问各项,则它是一个哈希表(Hashtable)。集合......
取消
感谢您的支持,我会继续努力的!
扫码支持
扫码打赏,你说多少就多少

打开支付宝扫一扫,即可进行扫码打赏哦

您的支持,是我们前进的动力!