代码之家  ›  专栏  ›  技术社区  ›  Samuh

网页视图内的HTML

  •  3
  • Samuh  · 技术社区  · 15 年前

    我正在向服务器发送一些数据,使用 DefaultHttpClient 在响应流中,我得到一个HTML文件。我将流保存为字符串,并将其传递到另一个包含WebView的活动,以便在屏幕上呈现此HTML:

    response = httpClient.execute(get);
    InputStream is = response.getEntity().getContent();
    BufferedReader br = new BufferedReader(new InputStreamReader(is,"utf-8"));
    StringBuffer sb = new StringBuffer();
    String line;
    
    while((line=br.readLine())!=null){
        sb.append(line);
        sb.append("\n");
    }
    
    is.close();
    
    Intent intent = new Intent(this,Trial.class);
    intent.putExtra("trial",sb.toString());
    startActivity(intent);
    
    Log.i("SB",sb.toString());
    

    在第二个活动中,加载WebView的代码为:

    WebView browser = ((WebView)findViewById(R.id.trial_web));
    browser.getSettings().setJavaScriptEnabled(true); 
    browser.loadData(html,"text/html", "utf-8");
    

    运行此代码时,WebView无法正确呈现HTML内容。它实际上在屏幕上以URL编码格式显示HTML字符串。有趣的是,如果我将记录器输出复制到HTML文件,然后在我的WebView中加载此HTML(使用 webview.loadurl(file:///assets/xyz.html) )一切正常。

    我怀疑字符编码有问题。

    这里出什么事了?请帮忙。

    谢谢。

    1 回复  |  直到 15 年前
        1
  •  1
  •   CommonsWare    15 年前

    尝试使用 BasicResponseHandler 而不是自己把它全部转换成一个字符串。见 here 例如。我怀疑这会有帮助,但它会简化您的代码,让您摆脱效率低下的问题 StringBuffer .

    另外,您可能会尝试切换到 loadDataWithBaseURL() 因为我的成绩很差 loadData() . 上述示例也显示了这一点。