как отправить http-запрос, используя только веб-просмотр - PullRequest
0 голосов
/ 13 мая 2018

Я хочу сделать http-запрос с помощью веб-просмотра.

Я пытаюсь отправить реквизит поста на сервер API с учетными данными для входа в систему, загрузить страницу ответа в веб-представление и перейти оттуда к веб-приложению.

 wv.setWebViewClient(new WebViewClient() {
    @Override
    public void onPageStarted(WebView view, String url, Bitmap favicon) {
        super.onPageStarted(view, url, favicon);

        if (!Common.connectionAvailable(WebActivity.this)) {
            Toast.makeText(getApplicationContext(),"Check Internet",Toast.LENGTH_LONG).show();
            finish();
        }
        pd =  new ProgressDialog(WebActivity.this,
                R.style.AppTheme_Dark_Dialog);
        pd.setMessage("Loading APP");
        pd.show();
    }

    @Override
    public void onPageFinished(WebView view, String url) {
        super.onPageFinished(view, url);
        if (pd != null) {
            pd.dismiss();
        }
    }

    @Override
    public void onReceivedError(WebView view, WebResourceRequest request, WebResourceError error) {
        super.onReceivedError(view, request, error);


        finish();
    }

    @Override
    public boolean shouldOverrideUrlLoading(WebView view, String url) {

        view.loadUrl(url);
        return super.shouldOverrideUrlLoading(view, url);
    }
}
            );
wv.loadUrl("http://myapp/api/login");

1 Ответ

0 голосов
/ 14 мая 2018

Объект WebView на самом деле имеет метод для публикации данных, используя метод post

String user_id = "USERID";
String user_password = "USER_PASSWORD";

String postData = "username="+user_id+"&password="+user_password;
webView.postUrl("http://localhost/api/login", EncodingUtils.getBytes(postData, "BASE64"));

Этот метод протестирован и работает как в oreo, однако EncodingUtils выдает предупреждение как устаревшее.Любое лучшее решение приветствуется.

...