Java URL 处理

说明

Java URLConnection setReadTimeout(int timeout) 方法将读取超时设置为指定的超时(以毫秒为单位)。非零值指定在与资源建立连接时从输入流读取的超时。如果在有数据可供读取之前超时到期,则会引发 java.net.SocketTimeoutException。超时为零被解释为无限超时。

声明

以下是 java.net.URLConnection.setReadTimeout(int timeout) 方法的声明

public void setReadTimeout(int timeout) 

参数

timeout - 一个 int,指定要使用的超时值(以毫秒为单位)

返回值

一个 int,表示读取超时值(以毫秒为单位)

Exception

IllegalArgumentException - 如果超时参数为负数。

示例 1

以下示例显示了使用 Java URLConnection setReadTimeout() 方法获取 https 协议的有效 url。在此示例中,我们将创建 URL 类的实例。使用 url.openConnection() 方法,我们获取 URLConnection 实例。使用 getReadTimeout(),我们获取 URLConnection 实例的读取超时并打印它。然后使用 setReadTimeout() 方法,我们将读取超时值增加 1 小时为 true,并再次打印相同的值 -

package com.yxjc123;

import java.io.IOException;
import java.net.URL;
import java.net.URLConnection;
import java.time.Instant;
import java.util.Date;

public class UrlConnectionDemo {
   public static void main(String [] args) {
      try {
         URL url = new URL("https://www.yxjc123.com");
         URLConnection urlConnection = url.openConnection();
         int headerValue = urlConnection.getReadTimeout();
         System.out.println("Read Timeout: " + Date.from(Instant.ofEpochMilli(headerValue)));
         headerValue += 3600000;
         urlConnection.setReadTimeout(headerValue);
         System.out.println("Updated Read Timeout: " + Date.from(Instant.ofEpochMilli(headerValue)));
      } catch (IOException e) {
         e.printStackTrace();
      }
   }
} 

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

输出

Read Timeout: Thu Jan 01 05:30:00 IST 1970
Updated Read Timeout: Thu Jan 01 06:30:00 IST 1970 

示例 2

以下示例显示使用 Java URLConnection setReadTimeout() 方法获取具有 http 协议的有效 url。在此示例中,我们将创建 URL 类的实例。使用 url.openConnection() 方法,我们获取 URLConnection 实例。使用 getReadTimeout(),我们获取 URLConnection 实例的读取超时并打印它。然后使用 setReadTimeout() 方法,我们将读取超时值增加 1 小时并再次打印相同的值 -

package com.yxjc123;

import java.io.IOException;
import java.net.URL;
import java.net.URLConnection;
import java.time.Instant;
import java.util.Date;

public class UrlConnectionDemo {
   public static void main(String [] args) {
      try {
         URL url = new URL("http://www.yxjc123.com");
         URLConnection urlConnection = url.openConnection();
         int headerValue = urlConnection.getReadTimeout();
         System.out.println("Read Timeout: " + Date.from(Instant.ofEpochMilli(headerValue)));
         headerValue += 3600000;
         urlConnection.setReadTimeout(headerValue);
         System.out.println("Updated Read Timeout: " + Date.from(Instant.ofEpochMilli(headerValue)));
      } catch (IOException e) {
         e.printStackTrace();
      }
   }
} 

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

输出

Read Timeout: Thu Jan 01 05:30:00 IST 1970
Updated Read Timeout: Thu Jan 01 06:30:00 IST 1970 

示例 3

以下示例显示使用 Java URLConnection setReadTimeout() 方法获取具有 http 协议的有效 url。在此示例中,我们将创建 URL 类的实例。使用 url.openConnection() 方法,我们获取 URLConnection 实例。使用 getReadTimeout(),我们获取 URLConnection 实例的读取超时并打印它。然后使用 setReadTimeout() 方法,我们将读取超时值增加 1 小时并再次打印相同的值 -

package com.yxjc123;

import java.io.IOException;
import java.net.URL;
import java.net.URLConnection;
import java.time.Instant;
import java.util.Date;

public class UrlConnectionDemo {
   public static void main(String [] args) {
      try {
         URL url = new URL("http://www.baidu.com");
         URLConnection urlConnection = url.openConnection();
         int headerValue = urlConnection.getReadTimeout();
         System.out.println("Read Timeout: " + Date.from(Instant.ofEpochMilli(headerValue)));
         headerValue += 3600000;
         urlConnection.setReadTimeout(headerValue);
         System.out.println("Updated Read Timeout: " + Date.from(Instant.ofEpochMilli(headerValue)));
      } catch (IOException e) {
         e.printStackTrace();
      }
   }
} 

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

输出

Read Timeout: Thu Jan 01 05:30:00 IST 1970
Updated Read Timeout: Thu Jan 01 06:30:00 IST 1970