【问题标题】:What's the use of Reading from an URL object in JAVA从 JAVA 中的 URL 对象读取有什么用
【发布时间】:2010-08-18 12:45:04
【问题描述】:

比如从 URL.openStream() 创建一个 inputStream;

  1. 并从中读取。读取这些信息有什么用?

  2. 当我们使用 URL 地址创建一个 URL 对象时,实际上我们并没有在我们的 java 程序和 Internet 上的 URL 之间建立连接,对吧? 由于没有建立这样的连接(换句话说,我们的 2 是孤立的),我们甚至如何从中读取信息?换句话说,我们怎么知道它是什么样的?

抱歉,关于网络的新知识。 :p

感谢您的任何意见!

【问题讨论】:

    标签: java url networking


    【解决方案1】:

    URL.openStream() 确实打开了到 URL 的连接。来自the API documentation

    打开到此 URL 的连接并 返回一个 InputStream 进行读取 从那个连接。这种方法是一种 简写:

         openConnection().getInputStream()
    

    现在应该很明显,某种连接已经建立。设置连接以获取位于 URL 处的资源的内容。当然,这取决于 URL 对象中指定的协议方案 - HTTP 或 JAR。响应可以从输入流中读取为字节,就像任何其他流一样。

    【讨论】:

    • 非常感谢您的回复!那么 URL 和 InetAddress 有什么区别呢?我发现它们以某种方式相同......?
    • InetAddress 是一种 URL? (都代表互联网上的地址,但 InetAddress 专门用于主机。)?
    • InetAddress 类用于表示单个主机(IP 地址)。 URL 是用户代表主机上可能存在的许多资源中的任何一种。
    • @Yue:我觉得InetAdress是用来连接Socket的,而URL是用来连接资源的。
    • @tulskiy - 部分正确。要使用 Socket,您需要知道 1) TCP 或 UDP,2) 什么端口号,以及 3) 要通信/期望的协议。 URL 明确或隐含地指定了所有这些。
    【解决方案2】:

    InetAddress 是“example.com”(或 99.99.99.99),但 URL 是“http://example.com/wombats.html”。

    InetAddress 只是机器的网络地址,不提供有关机器支持哪些服务或如何连接到它们的任何信息。 (InetAddress 类将负责将诸如“example.com”之类的 DNS 名称映射到 IP 地址。)

    URL 是资源(例如文件)的位置,通常意味着获取它的方法。 (URL 是 Uniform Resource Locator 的缩写。)URL.openStream() 方法是(尝试)获取由 URL 表示的资源的简单方法。

    当您创建URL 对象时,您不会建立任何网络连接。当您(例如)调用URL.openStream() 时,连接就建立了。

    【讨论】:

      猜你喜欢
      • 2013-04-06
      • 1970-01-01
      • 1970-01-01
      • 2016-06-17
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-08-20
      • 1970-01-01
      相关资源
      最近更新 更多