2015-09-11 2 views
-8

Я разрабатываю приложение android для клиента, у меня есть веб-просмотр, который загружает внешние ссылки, некоторые страницы имеют форму с post action, я использую loadUrl (с переопределением), чтобы добавить extraHeaders (устройство тип и токен доступа), но с заголовком отправки теряется, и я получил ошибку 401. Примечание: я не могу внести большую модификацию на клиентский сайт, мне нужно найти решение с боковой стороны приложения Android.Android-приложение для просмотра веб-страниц, не работающее с extraheader

@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); 
     } 
    }); 

} 
+2

Вам нужно добавить код и контексты для других, чтобы помочь вам. –

+0

Я добавил свой код registerWebView, я делаю загрузку url из класса меню. –

ответ

0

Я нашел решение своей проблемы, это очень просто, просто просто вставить код javascript в onPageFinished.

Смежные вопросы