在webview中加载html文件

时间:2014-07-15 17:28:10

标签: android webview

您好我尝试将给定的HTML文件加载到WiebView中,就像这样:

webView.loadUrl("http://192.168.0.50/www/TestWebSite/medias/en_fileTest.htm");

我收到错误:

"the Web page at http://192.168.0.50/www/TestWebSite/medias/en_fileTest.htm might be temporarly down ...."

我无法理解为什么我在浏览器中加载了这个确切的网址,它会正确显示。

我也试图取代" http"通过" file"没有成功。

为什么webView.loadUrl()找不到它?

编辑18_07: 应用程序始终在genymotion 2.2.2上运行/调试。

我尝试创建一个名称来访问我的服务器,而不是通过本地ip访问它。 我想知道ip是否会扰乱WebView。 现在,可以从caBBAlainB.synology.me访问运行Web服务器的NAS。 这并没有解决WebView问题但增加了一个新问题!一个噩梦。 我再也无法访问xml文件了! 该文件的读取方式如下:

String siteUrl = "http://caBBAlainB.synology.me/www/AvenArmand/";
String siteDescriptionFileUrl = siteUrl + "site_description.xml";

static class InitTask extends AsyncTask<Void, Integer, Integer> {

   ....

    @Override
    protected Integer doInBackground (Void... arg0) {
        URL url = null;
        BufferedInputStream buf;
        ArrayList<Language> languages = null;

        try {
            url = new URL(site.getSiteDescriptionFileUrl());
            // So it returns "http://caBBAlainB.synology.me/www/AvenArmand/site_description.xml"
            // Création d'une connection HTTP à une URL
            URLConnection connection = url.openConnection();
            HttpURLConnection httpConnection = (HttpURLConnection)connection;
            int responseCode = httpConnection.getResponseCode();

            if (responseCode == HttpURLConnection.HTTP_OK) {
                InputStream in = httpConnection.getInputStream();
                int error = 0;
                if ((error = processStream(in)) != 1) {
                     //Process error
                }
            }
        } // catch what needed
    }
}

当我尝试执行httpConnection.getResponseCode()时,我得到一个runtimeException !!

Thread[<11> AsyncTask #1 (Suspended (exception RunTime Exception

详情如下:

       // Compiled from ThreadPoolExecutor.java (version 1.5 : 49.0, super bit) 
     public class java.util.concurrent.ThreadPoolExecutor extends java.util.concurrent.AbstractExecutorService {

// Method descriptor #17 (IIJLjava/util/concurrent/TimeUnit;Ljava/util/concurrent/BlockingQueue;) // Signature: (IIJLjava/util/concurrent/TimeUnit;Ljava/util/concurrent/BlockingQueue<Ljava/lang/Runnable;>;) // Stack: 3, Locals: 7 public ThreadPoolExecutor(int corePoolSize, int maximumPoolSize, long keepAliveTime, java.util.concurrent.TimeUnit unit, java.util.concurrent.BlockingQueue workQueue); 0 aload_0 [this] 1 invokespecial java.util.concurrent.AbstractExecutorService() [1] 4 new java.lang.RuntimeException [2] 7 dup 8 ldc <String "Stub!"> [3] 10 invokespecial java.lang.RuntimeException(java.lang.String) [4] 13 athrow Line numbers: [pc: 0, line: 29] Local variable table: [pc: 0, pc: 14] local: this index: 0 type: java.util.concurrent.ThreadPoolExecutor [pc: 0, pc: 14] local: corePoolSize index: 1 type: int [pc: 0, pc: 14] local: maximumPoolSize index: 2 type: int [pc: 0, pc: 14] local: keepAliveTime index: 3 type: long [pc: 0, pc: 14] local: unit index: 5 type: java.util.concurrent.TimeUnit [pc: 0, pc: 14] local: workQueue index: 6 type: java.util.concurrent.BlockingQueue Local variable type table: [pc: 0, pc: 14] local: workQueue index: 6 type: java.util.concurrent.BlockingQueue<java.lang.Runnable> etc..... Do I have to paste all the hundreds lines ??

所以我确切地说代码完全适用于192.168.0.50而不是caBBAlanB.synology.me!

请,我真的什么都不懂!

此致 阿兰

3 个答案:

答案 0 :(得分:0)

如果您正在使用应用程序本身的本地html文件,请尝试将所有html文件放在assets文件夹中。

之后使用如下所述

    yourBrowser.loadUrl("file:///android_asset/index.html");

答案 1 :(得分:0)

<uses-permission android:name="android.permission.INTERNET" /> 

将其放入AndroidManifest.xml

答案 2 :(得分:0)

不幸的是,我真的不知道这个问题是如何解决的。它只是起作用。模拟器上可能存在临时问题...