2013-10-30 9 views
6

एंड्रॉइड WebView से किए गए सभी अनुरोधों को मैं कैसे रोक सकता हूं और संबंधित अनुरोध शीर्षलेख प्राप्त कर सकता हूं? मैं XHRs, स्क्रिप्ट स्रोतों, सीएसएस सहित मेरी WebView से बने हर अनुरोध के लिए शीर्ष लेख को देखने के लिए, आदिमैं एंड्रॉइड वेबव्यू अनुरोधों पर अनुरोध शीर्षलेख कैसे देखूं?

iOS पर बराबर NSURLCache जो आप इस सारी जानकारी दे देंगे ओवरराइड करने के लिए है चाहता हूँ। निम्नलिखित शायद कर रहे हैं कि मैं क्या चाहते हैं, लेकिन जहाँ तक मैं देख सकता हूँ WebViewClient ही कभी हमें वापस तार देता है के सबसे करीब:

void onLoadResource(WebView view, String url); 
WebResourceResponse shouldInterceptRequest(WebView view, String url); 
+0

एंड्रॉइड के 'वेब व्यू' या 'वेब व्यू क्लाइंट' के साथ अनुरोध हेडर संभव नहीं है, afaik। मैंने हल्के प्रॉक्सी का उपयोग करके इस समस्या को हल किया। – acj

+0

@acj - क्या आपने 'वेब व्यू' या बाहरी (राउटर/नेटवर्क स्तर) पर प्रोग्रामिक रूप से प्रॉक्सी किया है? –

+0

मैं इसे डिवाइस सेटिंग्स में मोबाइल नेटवर्क में कॉन्फ़िगर करता हूं। एक और विकल्प: यदि मुझे हेडर की जांच करने के लिए बस एक त्वरित और गंदे विधि की आवश्यकता है, तो मैं अपने लैपटॉप पर नेटकैट ('एनसी') का एक उदाहरण शुरू करूंगा और 'वेबव्यू' को नेटकैट इंस्टेंस से कनेक्ट कर दूंगा। – acj

उत्तर

3

आप सवाल बहुत this one के समान लगता है, इसलिए तत्काल और स्पष्ट जवाब है कि है यह Android के WebView या WebViewClient पर अनुरोध हेडर पढ़ने के लिए संभव नहीं है।

हालांकि कामकाज हैं, जो आपको जो चाहिए उसे प्राप्त करने की अनुमति दे सकता है। This answer अधिक विस्तार से वर्णन करता है कि यह कैसे करें।

1

this way करके आप वेब दृश्य एप्लिकेशन के लिए डीबग सक्षम कर सकते हैं और Chrome डेवलपर टूल का उपयोग करके अपने अनुरोध, प्रतिक्रियाओं, सीएसएस, javascripts का पूरा विवरण देखने के लिए, आदि

3
webview.setWebViewClient(new WebViewClient() { 
      @SuppressLint("NewApi") 
      @Override 
      public WebResourceResponse shouldInterceptRequest(WebView view, WebResourceRequest request) { 
       Log.d("", "request.getRequestHeaders()::"+request.getRequestHeaders()); 

       return null; 
      } 
     }); 
1

मैं भी अनुरोध हेडर में अवरोध डालने के साथ कुछ समस्या थी WebView myWebView में।

सबसे पहले मैंने myWebView के लिए कस्टम WebViewClient सेट करने के साथ ऐसा करने का प्रयास किया।

myWebView.setWebViewClient(new WebViewClient() { 

    @Override 
      @TargetApi(Build.VERSION_CODES.LOLLIPOP) 
      public boolean shouldOverrideUrlLoading(WebView view, WebResourceRequest request) { 
       Log.v("USERAGENTBROWSE", "shouldOverrideUrlLoading api >= 21 called"); 

       //some code 

       return true; 
      } 

    @Override 
      public boolean shouldOverrideUrlLoading(WebView view, String url) { 
       Log.v("USERAGENTBROWSE", "shouldOverrideUrlLoading api < 21 called"); 

       //some code 

       return true; 
      } 

}); 

लेकिन विधि shouldOverrideUrlLoading(...) कभी नहीं बुलाया गया था। और मेरे पास वास्तव में कोई विचार नहीं है।

तब मैंने पाया "User-Agent", "Cache-Control" की तरह कुछ सामान्य हेडर रोकना रास्ता, आदि .:

myWebView.getSettings().setUserAgentString("your_custom_user_agent_header"); 
myWebView.getSettings().setCacheMode(int mode); 
... 

आशा है कि यह किसी को मदद मिल सकती है नहीं है।

संबंधित मुद्दे