java - 为什么我需要在此 Java 示例中强制转换 HttpURLConnection?

标签 java httpurlconnection

我正在阅读《Java 编程面试》一书。他们提供了这个代码示例,我不明白:

@Test
public void makeBareHttpRequest() throws IOException {

  final URL url = new URL("http", "en.wikipedia.org", "/");

  final HttpURLConnection connection = (HttpURLConnection) url.openConnection(); 

  connection.setRequestMethod("GET");

  final InputStream responseInputStream = connection.getInputStream();

  final int responseCode = connection.getResponseCode(); 

  final String response = IOUtils.toString(responseInputStream); 

  responseInputStream.close(); 

  assertEquals(200, responseCode); 

  System.out.printf("Response received: [%s]%n", response); 

}

关于何时需要强制转换变量(在右侧)是否有一些一般规则?为什么这里 HttpURLConnection 被转换到右侧:

  final HttpURLConnection connection = (HttpURLConnection) url.openConnection(); 

但是responseInputStream不需要在此处转换到右侧:

  final InputStream responseInputStream = connection.getInputStream();

Java 程序员如何知道何时进行这种类型转换,何时不进行?

最佳答案

URL 可以是任何类型的方案,例如ftp、http、https、文件等

因此,如果您打算执行 HTTP 操作,则必须将其转换为 HttpURLConnection

看下一行,正在设置请求方法:connection.setRequestMethod("GET");这是特定于http请求的

您不需要转换 responseInputStream,因为 IOUtils 能够使用 InputStream 抽象类的实例。

关于java - 为什么我需要在此 Java 示例中强制转换 HttpURLConnection?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29460996/

相关文章:

java - RabbitMQ Stomp 通过 websocket : Unable to retrieve queued messages

java - 对 orchid 的 HTTP 请求抛出警告

java - 使用内在锁进入 block

java - Intellij-Idea - Tomcat 远程更新

java - 获取选项值总是返回 'null'

java - 在 Java 中检索给定 URL 的最终位置

java - 带有非系统范围 CookieHandler 的 HttpURLConnection

Java - 通过 POST 方法轻松发送 HTTP 参数

java - 将 Curl url 转换为 Java

iis - SignalR 连接挂起,大约 30 秒后调用客户端