Android webview 帖子无法与额外标题一起使用

Posted

技术标签:

【中文标题】Android webview 帖子无法与额外标题一起使用【英文标题】:Android webview post not working with extraheader 【发布时间】:2015-12-07 19:26:02 【问题描述】:

我正在为客户端开发 android 应用程序,我有一个加载外部链接的 web 视图,一些页面有一个带有 post 操作的表单,我使用 loadUrl(带覆盖)添加 extraHeaders(设备类型和访问令牌),但是提交标头丢失,我收到 401 错误。 注意:我不能对客户端进行大的修改,我必须从android应用端找到解决方案。

@SuppressLint("javascriptInterface")
public void registerWebView() 
    Log.i("ACC TOKEN", DataSave.getAccessToken());
    mWebView = (AdvancedWebView) findViewById(R.id.mbrowser);
    mWebView.addHttpHeader(Utils.HEADER_AUTHORIZATION_NAME, "Bearer " + DataSave.getAccessToken());
    mWebView.addHttpHeader(Utils.HEADER_DEVICE_NAME, Utils.HEADER_DEVICE_VALUE);
    mWebView.addJavascriptInterface(new WebAppInterface(this), "Android");
    if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.KITKAT) 
        WebView.setWebContentsDebuggingEnabled(true);
    

    Log.i("WV FILE", AdvancedWebView.isFileUploadAvailable() + "");

    final GestureDetector gestureDetector = new GestureDetector(mContext, new GestureListener());
    mWebView.setOnTouchListener(new View.OnTouchListener() 

        @Override
        public boolean onTouch(View v, MotionEvent event) 
            hideShareMenu();
            return gestureDetector.onTouchEvent(event);
        

    );



    mWebView.setWebViewClient(new WebViewClient() 
        @Override
        public void onReceivedError(WebView view, int errorCode, String description, String failingUrl) 
            super.onReceivedError(view, errorCode, description, failingUrl);
            Log.i("WebView", "Got error !! " + errorCode);
        

        public boolean shouldOverrideUrlLoading(WebView view, String urlT) 
            Log.i("WebView", "Loading " + urlT);
            if (urlT.contains(Utils.URL_ROOT)) 
                view.stopLoading();
                view.loadUrl(urlT, getExtraHeaders());
                return true;
            else
                view.stopLoading();
                Intent browserIntent = new Intent(Intent.ACTION_VIEW, Uri.parse(urlT));
                startActivity(browserIntent);
                return false;
            
        

        public void onPageFinished(WebView view, String url) 
            handleNavigationUI(url);
        

    );



    WebSettings webSettings = mWebView.getSettings();
    webSettings.setJavaScriptEnabled(true);
    webSettings.setCacheMode(WebSettings.LOAD_NO_CACHE);
    webSettings.setLoadWithOverviewMode(true);
    webSettings.setUseWideViewPort(true);

    mPublicationIcon = (ImageView)findViewById(R.id.publication);

    mSearchActionBar = (RelativeLayout)findViewById(R.id.layout_find);
    mSearchActionBarHeight = Utils.dpToPx(mContext, 40);
    mSearchInput = (cEditText)findViewById(R.id.search_input);

    mPublicationIcon.setOnClickListener(new View.OnClickListener() 
        @Override
        public void onClick(View v) 
            mWebView.loadUrl(Utils.URL_ROOT + Utils.URL_PUBLICATION);
            toggleSearchbar(false, "");
            togglePublicationIcon(false);
        
    );


【问题讨论】:

您需要添加一些代码和上下文以便其他人能够帮助您。 我添加了我的 registerWebView 代码,我从菜单类中加载了 url。 【参考方案1】:

我找到了解决我的问题的方法,很简单,只需简单的javascript代码注入onPageFinished函数即可。

【讨论】:

以上是关于Android webview 帖子无法与额外标题一起使用的主要内容,如果未能解决你的问题,请参考以下文章

网站菜单栏在移动浏览器中正常工作时无法与 WebView android 一起使用

html5视频无法与android webview一起使用

Android WebView 不显示图片 Instagram 嵌入

RecyclerView中的WebView,滚动问题

Android,无法使用 WebView 上传图片

在 Android 中预加载网页(使用 WebView?)