6

我正在嘗試使用WebView開發Android瀏覽器應用程序,該應用程序使用戶能夠訪問自定義協議中的內容。自定義協議可能是foobar://Android WebView協議處理程序

我想攔截對此自定義協議的所有請求。這意味着:

  1. GET請求
  2. POST請求

,我需要能夠交出這些操作的結果返回給web視圖。

可以使用shouldInterceptRequest(可從API級別11獲得)處理GET請求。

現在我的問題是:如何處理POST請求

幾乎相同的問題已被問herehere,但是沒有找到他們的問題的解決方案。

+0

你有沒有嘗試覆蓋url的負載? – Raykud

回答

0

你試圖壓倒一切的POST方法做這樣的事情:

private class ViewerWebViewClient extends WebViewClient { 

     @Override 
     public void onPageFinished(WebView view, String url) { 

     } 

     @Override 
     public boolean shouldOverrideUrlLoading(WebView view, final String url) { 
      if(!url.contains(MYKEYWORD)) 
       { 
       Toast.makeText(getActivity(),POSTING, Toast.LENGTH_LONG).show(); 
       return true; 
       } 
      return super.shouldOverrideUrlLoading(view, url); 
     } 
    } 

它只是一個想法。這可能可以幫助你。

+2

如果用戶正在導航到某個URL並離開當前頁面,這很有用。然後我可以使用WebView.loadUrl(...)或.post(...)。但是,如果瀏覽器只是做後臺請求(認爲JavaScript),那麼我不能爲它返回內容。 shouldInterceptRequest可以處理GET請求並返回內容,但不可能攔截POST請求並獲取POST數據。不幸的是你的方法不能解決問題。謝謝你嘗試! – foens