有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

java如何在viewsource模式下使用openStream?

我可以打开viewsource模式(Ctrl+U)。我想读这篇文章。我试试URL。openStream()但我得到的服务器为空

java.net.MalformedURLException: unknown protocol:

我该怎么做,谢谢。 这是我的密码

public void viewSource(){
    try {
        URL url = new URL("view-source:https://www.google.com/");
        Scanner sc = new Scanner (url.openStream());
        while (sc.hasNextLine())
        {
            System.out.println(sc.nextLine());
        }
        sc.close();
    } catch (MalformedURLException ex) {
        Logger.getLogger(Test.class.getName()).log(Level.SEVERE, null, ex);
    } catch (IOException ex) {
        Logger.getLogger(Test.class.getName()).log(Level.SEVERE, null, ex);
    }

}

共 (2) 个答案

  1. # 1 楼答案

    How to use openStream with view-source mode?

    一切@Michael Powerssaid都是正确的。然而,他在这里没有提到根本问题。也就是说:你用view-source:试图做的事情毫无意义(至少从URL.openStream()API的角度来看。)

    为什么

    URL上的view-source:前缀是指向web浏览器的方向。它的意思是这样的

    User: "Hey Mr Browser"

    Browser: "What can I do for you?

    User: "This thing denoted by the URL after view-source: ..."

    Browser: "Yes, I am fetching it. What now?"

    User: "Instead of rendering as you would normally do, just show it to me in a plain text window"

    Browser: "OK ... here it is."

    这只适用于指向浏览器的方向,或者更广泛地说,适用于指向渲染和显示资源的对象的方向

    如果我们试图将上述含义应用到你的代码中的URL,则会出现概念上的问题。指定URL.openStream方法是为了给您一个由原始内容(字节)组成的流用于HTTP响应主体。不涉及渲染。因此,没有“你通常会做的”渲染不做

    因此,代码失败是因为JVM找不到一个协议处理程序,该处理程序知道如何处理带有view-source:协议的URL

    (除了忽略上下文上毫无意义的view-source:方向,协议处理程序能做什么?告诉它去做它已经在做的事情?)

  2. # 2 楼答案

    这里的主要问题是URL:view-source:https://www.google.com/

    view-source:位是一个web浏览器ism,它实际上不是URL的一部分。URL总是以协议开头(例如https://http://ftp://ws://,等等),尝试:

    https://www.google.com/