HTTP POST-ответ в webview не работает нормально - PullRequest
0 голосов
/ 18 октября 2011

Я попробовал этот пример, и он отлично работает с примером URL (http://search.yahoo.com/search), но когда я делаю это для "http://www.ilias.de/docu/login.php?target=&client_id=docu",, я не могу правильно увидеть ответ в веб-просмотре. видны, но изображения нет. И ссылки не работают.

Как мне решить эту проблему?

public class ilias extends Activity {
    WebView webView;

    /** Called when the activity is first created. */
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);
        webView = (WebView)findViewById(R.id.webview);

        BufferedReader bufferedReader = null;
        HttpClient httpClient = new DefaultHttpClient();
        HttpPost request = new HttpPost("http://www.ilias.de/docu/login.php?client_id=docu");
        List<NameValuePair> postParameters = new ArrayList<NameValuePair>();
        postParameters.add(new BasicNameValuePair("username", "stacked"));  //This username
        postParameters.add(new BasicNameValuePair("password", "overflow")); //works.
        try {
            UrlEncodedFormEntity entity = new UrlEncodedFormEntity(postParameters);
            request.setEntity(entity);

            HttpResponse response= httpClient.execute(request);

            bufferedReader = new BufferedReader(
                    new InputStreamReader(response.getEntity().getContent()));
            StringBuffer stringBuffer = new StringBuffer("");
            String line = "";
            String LineSeparator = System.getProperty("line.separator");
            while ((line = bufferedReader.readLine()) != null) {
                stringBuffer.append(line + LineSeparator);
            }
            bufferedReader.close();

            Toast.makeText(ilias.this,
              "Finished",
            Toast.LENGTH_LONG).show();

            String webData = stringBuffer.toString();

            webData = webData.replace("#", "%23");
            webData = webData.replace("%", "%25");
            webData = webData.replace("\\", "%27");
            webData = webData.replace("?", "%3f");

            webView.loadData(webData,
              "text/html",
              "UTF-8");
        }
        catch (ClientProtocolException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
            Toast.makeText(ilias.this,
                           e.toString(),
                           Toast.LENGTH_LONG).show();
        }
        catch (IOException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
            Toast.makeText(ilias.this,
                           e.toString(),
                           Toast.LENGTH_LONG).show();
        }
        finally{
            if (bufferedReader != null){
                try {
                    bufferedReader.close();
                }
                catch (IOException e) {
                    // TODO Auto-generated catch block
                    e.printStackTrace();
                }
            }
        }
    }
}

Вот что у меня есть: http://img64.imageshack.us/img64/4913/deviceyl.png, и вот что я хочу: http://img200.imageshack.us/img200/8591/device1g.png

1 Ответ

2 голосов
/ 18 октября 2011

Я думаю, что вы должны использовать
loadDataWithBaseURl("http://www.ilias.de/docu/",webData,"text/html","UTF-8","about:blank");
вместо
webView.loadData(webData, "text/html", "UTF-8");

«Простой» метод loadData не загружает контент из сети, согласно ссылке .

@@@@@@@ EDIT @@@@@@@

Чтобы увидеть страницу, как в родном браузере, сначала удалите эти строки:

   webData = webData.replace("#", "%23");
   webData = webData.replace("%", "%25");
   webData = webData.replace("\\", "%27");
   webData = webData.replace("?", "%3f");

Это потому, что либо я не понимаю документацию API, либо loadDataWithBaseUrl не декодирует символы обратно.

И поиграйтесь с уровнем масштабирования (вы можете сделать это программно)

С уважением enter image description here

...