URL-адрес публикации Laravel в веб-просмотре при нажатии кнопки «Отправить» - веб-просмотр не переопределяет URL-адрес публикации с токеном доступа - PullRequest
0 голосов
/ 15 декабря 2018

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

Веб-представление загружается, как показано ниже, с клиентом Chrome для выбора фотографий.

    private ValueCallback<Uri> mUploadMessage;
    private Uri mCapturedImageURI = null;
    private ValueCallback<Uri[]> mFilePathCallback;
    private String mCameraPhotoPath;
    private static final int INPUT_FILE_REQUEST_CODE = 1;
    private static final int FILECHOOSER_RESULTCODE = 1;
    WebView mWebView;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_show_web_view);
    mWebView= (WebView) findViewById(R.id.webView1);
    mWebView.getSettings().setJavaScriptEnabled(true);
    mWebView.getSettings().setSaveFormData(true);
    mWebView.getSettings().setAppCacheEnabled(true);
    CookieSyncManager.createInstance(getContext());
    CookieSyncManager.getInstance().startSync();
    CookieManager cookieManager = CookieManager.getInstance();
    cookieManager.setAcceptCookie(true);
    CookieManager.getInstance().setAcceptThirdPartyCookies(wv1, true);
    mWebView.getSettings().setAppCacheEnabled(true);
    mWebView.getSettings().setPluginState(WebSettings.PluginState.ON);
    mWebView.getSettings().setLoadWithOverviewMode(true);
    mWebView.getSettings().setCacheMode(WebSettings.LOAD_NO_CACHE);
    mWebView.getSettings().setUseWideViewPort(true);
    mWebView.getSettings().setAllowFileAccess(true);
    mWebView.getSettings().setAllowContentAccess(true);
    mWebView.getSettings().setUserAgentString("Android");
    mWebView.getSettings().setDomStorageEnabled(true);

    String access = Appcontrol.getInstance().loadPreferencesString("access_token");
    final HashMap<String, String> map = new HashMap<String, String>();
    map.put("Authorization", "Bearer " + access);

    mWebView.loadUrl(constants.URL_GymAddWebview,map);

    mWebView.setWebViewClient(new WebViewClient() {
        public boolean shouldOverrideUrlLoading(WebView view, String url) {
            // do your handling codes here, which url is the requested url
            // probably you need to open that url rather than redirect:
            if ( url.contains(".pdf")){
                Intent intent = new Intent(Intent.ACTION_VIEW);
                intent.setDataAndType(Uri.parse(url), "application/pdf");
                try{
                    view.getContext().startActivity(intent);
                } catch (ActivityNotFoundException e) {
                    //user does not have a pdf viewer installed
                }
            } else {
                mWebView.loadUrl(url,map);
            }



            return false; // then it is not handled by default action
        }


        @Override
        public void onReceivedError(WebView view, int errorCode, String description, String failingUrl) {

            Log.e("error",description);
        }


        @Override
        public void onPageStarted(WebView view, String url, Bitmap favicon) {        //show progressbar here

            super.onPageStarted(view, url, favicon);
        }

        @Override
        public void onPageFinished(WebView view, String url) {
            //hide progressbar here

        }

    });
    mWebView.setWebChromeClient(new ChromeClient());
    }

// Приведенный выше код загружает веб-представление с помощью формы, которая собирает основные пользовательские данные и отправляется при нажатии кнопки.,Проблема, с которой я столкнулся, заключается в том, что при нажатии кнопки «Отправить» после ввода сведений в форму данные не добавляются, вместо этого в веб-представлении отображается страница входа, требующая проверки подлинности.Но я переопределил URL-адреса с помощью моего токена доступа.Кнопка отправки вызывает URL-адрес типа POST для сбора данных.Другие URL-адреса имеют тип GET, и они отлично работают при том же типе загрузки с токеном доступа.Те же URL-адреса работают без ошибок, если я запускаю их в обычном мобильном браузере (например, Chrome) или в веб-просмотре без какой-либо авторизации, как показано ниже.

mWebView.loadUrl(constants.URL_GymAddWebview);

// В приведенной выше строке загружается страница входа в систему, икак только я вхожу из веб-просмотра с интерфейсом laravel, я получаю форму добавления, и если я отправляю детали, она добавляется.Этого не произойдет, если я загружу webview с токеном доступа.Существует ли другой способ загрузки URL-адресов типа POST с токеном доступа в веб-представлении Android?

...