【问题标题】:Error fetching website source-code获取网站源代码时出错
【发布时间】:2012-11-28 12:11:45
【问题描述】:

我正在尝试创建一个简单的 Android 应用程序,它可以获取网站的源代码。无论如何,我已经写了以下内容:

WebView webView = (WebView) findViewById(R.id.webView);
try {
    webView.setWebViewClient(new WebViewClient());          
    InputStream input = (InputStream) new URL(url.toString()).getContent();
    webView.loadDataWithBaseURL("", "<html><body><p>"+input.toString()+"</p></body></html>", "text/html", Encoding.UTF_8.toString(),""); 
    setContentView(webView);
} catch (Exception e) {
    Alert alert = new Alert(getApplicationContext(),
                            "Error fetching data", e.getMessage());
}

我曾多次尝试将第 3 行更改为将获取源代码的其他方法,但它们都将我重定向到警报(没有消息的错误,只有标题)。

我做错了什么?

【问题讨论】:

    标签: android url httpwebrequest


    【解决方案1】:

    您不能仅使用它来加载网页是否有特殊原因?

    webView.loadUrl("www.example.com");
    

    如果您真的想将源代码抓取到一个字符串中,以便您可以操作它并按照您尝试的方式显示它,请尝试打开一个流到内容的流,然后使用标准 java 方法将数据读入到字符串,然后你可以对它做任何你想做的事情:

    InputStream is = new URL("www.example.com").openStream();
    
    InputStreamReader is = new InputStreamReader(in);
    StringBuilder sb = new StringBuilder();
    BufferedReader br = new BufferedReader(is);
    String read = br.readLine();
    
    while(read != null) {
        sb.append(read);
        read = br.readLine();
    }
    
    String sourceCodeString = sb.toString();
    webView.loadDataWithBaseURL("www.example.com/", "<html><body><p>"+sourceCodeString+"</p></body></html>", "text/html", Encoding.UTF_8.toString(),"about:blank");
    

    【讨论】:

    • 它仍然提示“获取数据时出错”...(我想显示网页源代码,并在运行时将其作为字符串,以便我可以使用它执行更多任务)
    • 实际抛出的异常是什么?如果您发布 e.getMessage() 字符串,我们可能会弄清楚。另外,我认为您应该向 loadDataWithBaseURL 添加第一个和最后一个参数,以便可以解析所有正确的路径。我已经更新了我的答案以包含这个
    • 1) 发生“错误”时,e.getMessage() 为空。 2) 我不想展示 example.com 网站,而是展示它的源代码,只是展示在 webView 中(为了方便功能)。
    • 1.消息是空的,这很奇怪。您可以单步调试调试器并检查异常以获取更多信息吗? 2. 我明白,在这种情况下,您可以将第一个参数留空,您应该没问题。
    • 如何单步调试调试器? (另外我的 s3 有一个问题,它经常断开连接,并且无法识别)。
    猜你喜欢
    • 2017-12-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-02-14
    • 2018-01-29
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多