1

で Web ページを読み込もうとしてWebViewいますが、ページを取得するとすべてのスタイル情報が失われました。Web ビューで CSS ファイルが適切に使用されていない可能性があります。

この方法で使用しているデータを取得するにはHTTP POST

public void postData() throws IOException, ClientProtocolException {
    List<NameValuePair> nameValuePairs = new ArrayList<NameValuePair>();  
    nameValuePairs.add(new BasicNameValuePair("param1", "parameter1"));  
    nameValuePairs.add(new BasicNameValuePair("param2", "parameter2"));

    HttpClient httpclient = new DefaultHttpClient();  
    HttpPost httppost = new HttpPost(URL_STRING);  
    httppost.setEntity(new UrlEncodedFormEntity(nameValuePairs));  

    HttpResponse response = httpclient.execute(httppost);  
    String data = new BasicResponseHandler().handleResponse(response);
    WebView mWebView = (WebView) findViewById(R.id.wv);
    mWebView.getSettings().setJavaScriptEnabled(true);
    mWebView.loadData(data, "text/html", "utf-8");
}

どうすればこの問題を解決できますか?

4

1 に答える 1

5

問題は相対パスhref="/maindir/css/sites.css"です:

解決策 1: (サーバーで変更)

Web サーバーにアクセスできる場合は、 でフル パスを使用してみてください<link type="text/css" rel="stylesheet" href="/maindir/css/sites.css">/maindir/css/sites.cssだからあなたの代わりにhttp://your.domain.com/maindir/css/sites.css

解決策 2: (クライアントで変更)

mWebView.loadData(data, "text/html", "utf-8");メソッドloadDataWithBaseURL (String baseUrl, String data, String mimeType, String encoding, String historyUrl)を使用する代わりにbaseUrl、相対パスを機能させるために文字列が使用されます。

結果は次のようになります。

mWebView.loadDataWithBaseURL("http://your.domain.com/", data, "text/html", "utf-8", null);

于 2013-03-14T20:15:46.950 に答える