Java URL 处理

说明

Java URL openConnection() 方法返回一个 URLConnection 实例,表示与 URL 引用的远程对象的连接,类似于 openConnection(),不同之处在于将通过指定的代理进行连接;不支持代理的协议处理程序将忽略代理参数并建立正常连接。调用此方法会抢占系统默认的 ProxySelector 设置。

声明

以下是 java.net.URL.openConnection() 方法的声明

public URLConnection openConnection(Proxy proxy) 

参数

返回值

链接到 URL 的 URLConnection。

异常

IOException - 如果发生 I/O 异常。

SecurityException - 如果存在安全管理器并且调用者没有权限连接到代理。

IllegalArgumentException - 如果 proxy 为 null,或者代理的类型错误,则会抛出异常。

UnsupportedOperationException - 如果实现协议处理程序的子类不支持此方法。

示例 1

以下示例显示 Java URL openConnection(Proxy proxy) 方法的用法使用 https 协议的有效 url。在此示例中,我们将创建 URL 类的实例。现在使用 openConnection() 方法,我们获取 URLConnection 对象。接下来,我们使用 URLConnection.getInputStream() 获取 url 指向的网站页面的内容并打印相应的内容 -

package com.yxjc123;

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.net.HttpURLConnection;
import java.net.Proxy;
import java.net.URL;
import java.net.URLConnection;

public class UrlDemo {
   public static void main(String [] args) {
      try {
         URL url = new URL("https://www.yxjc123.com");
         URLConnection urlConnection = url.openConnection(Proxy.NO_PROXY);
         HttpURLConnection connection = null;
         if(urlConnection instanceof HttpURLConnection) {
            connection = (HttpURLConnection) urlConnection;
         }else {
            System.out.println("Please enter an HTTP 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();
      }
   }
} 

让我们编译并运行上面的程序,这将产生以下结果 -

输出

<!DOCTYPE html><html lang="en"><head><title>Online Tutorials, Courses,...</body></html> 

示例 2

以下示例显示了 Java URL openConnection(Proxy) 方法的使用,以获取有效的网址。在此示例中,我们使用 http 协议创建 URL 类的实例。现在使用 openConnection() 方法,我们获取 URLConnection 对象。接下来,我们使用 URLConnection.getInputStream() 获取 url 指向的网站页面的内容并打印相应的内容 -

package com.yxjc123;

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.net.HttpURLConnection;
import java.net.Proxy;
import java.net.URL;
import java.net.URLConnection;

public class UrlDemo {
   public static void main(String [] args) {
      try {
         URL url = new URL("http","www.yxjc123.com","/index.htm");
         URLConnection urlConnection = url.openConnection(Proxy.NO_PROXY);
         HttpURLConnection connection = null;
         if(urlConnection instanceof HttpURLConnection) {
            connection = (HttpURLConnection) urlConnection;
         }else {
            System.out.println("Please enter an HTTP 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();
      }
   }
} 

让我们编译并运行上面的程序,这将产生以下结果 -

输出

<!DOCTYPE html><html lang="en"><head><title>Online Tutorials, Courses,...</body></html> 

示例 3

以下示例显示了 Java URL openConnection(Proxy) 方法的使用,以获取有效的带有文件协议的 url。在此示例中,我们将创建 URL 类的实例。现在使用 openConnection() 方法,我们获取 URLConnection 对象。接下来,我们使用 URLConnection.getInputStream() 来获取 url 指向的网站页面的内容。由于协议不是 http 或 https,程序将打印一条消息 请输入 HTTP URL。 并终止,如下所示 -

package com.yxjc123;

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.net.HttpURLConnection;
import java.net.Proxy;
import java.net.URL;
import java.net.URLConnection;

public class UrlDemo {
   public static void main(String [] args) {
      try {
         URL url = new URL("file","www.yxjc123.com","/index.htm");
         URLConnection urlConnection = url.openConnection(Proxy.NO_PROXY);
         HttpURLConnection connection = null;
         if(urlConnection instanceof HttpURLConnection) {
            connection = (HttpURLConnection) urlConnection;
         }else {
            System.out.println("Please enter an HTTP 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();
      }
   }
} 

让我们编译并运行上面的程序,这将产生以下结果 -

输出

Please enter an HTTP URL.