दिलचस्प पोस्ट
विशिष्ट प्रतिबद्ध के लिए एक git पैच जेनरेट करें आईओएस में कैमरे की अनुमति का पता लगाएं फ़ंक्शन फ़ाइल की फ़ंक्शन सूची क्लास.नईवंस्टेंस () "बुराई" क्यों है? जावा के लिए एक हेप विश्लेषण उपकरण की सिफारिशें? जावा परिणाम के परिणाम की जाँच करें कि क्या कोई परिणाम है या नहीं मैं ओरेकल में तालिकाओं के आकार की गणना कैसे करूं? मैं कुछ एंड्रॉइड ऐप्स और आईसीएस में देखता हूं जैसे मैं सहायता ओवरले कैसे बनाऊँ? srand () – क्यों इसे केवल एक बार कहते हैं? वहाँ एक अच्छा jQuery खींचें और ड्रॉप फ़ाइल अपलोड प्लगइन है? प्रवेश-नियंत्रण-अनुमति-उत्पत्ति त्रुटि Google एपीआई के लिए एक jQuery पोस्ट भेज रहा है मैं JSF प्रबंधित बीन गुणों को जावास्क्रिप्ट समारोह में कैसे पास कर सकता हूं? ओपनजीएल – ओबीजे में शीर्ष नॉर्मल्स अवलोकन योग्य ढेर और कतार अंतिम 8 (8) में जावा 8 में जोरदार पहुंचने योग्य वस्तु

एक WebView में HTTP प्रतिक्रिया शीर्ष लेखों तक पहुंचें?

एक वेब पेज के वेब पेज पर लोड होने के बाद क्या एक गतिविधि में एचटीएमए प्रतिक्रिया हेडर देखने का कोई तरीका है? ऐसा लगता है कि संभव होना चाहिए, लेकिन मुझे कोई भी तरीका नहीं मिल सकता है जो हेडर को बेनकाब करते हैं

वेब के समाधान से एकत्रित समाधान "एक WebView में HTTP प्रतिक्रिया शीर्ष लेखों तक पहुंचें?"

न तो WebView और WebViewClient तरीकों को ऐसा करने के लिए प्रदान करता है, यद्यपि, आप उस मैन्युअल रूप से लागू करने का प्रयास कर सकते हैं। आप ऐसा कुछ कर सकते हैं:

 private WebView webview; public void onCreate(Bundle icicle){ // bla bla bla // here you initialize your webview webview = new WebView(this); webview.setWebViewClient(new YourWebClient()); } // this will be the webclient that will manage the webview private class YourWebClient extends WebViewClient{ // you want to catch when an URL is going to be loaded public boolean shouldOverrideUrlLoading (WebView view, String urlConection){ // here you will use the url to access the headers. // in this case, the Content-Length one URL url; URLConnection conexion; try { url = new URL(urlConection); conexion = url.openConnection(); conexion.setConnectTimeout(3000); conexion.connect(); // get the size of the file which is in the header of the request int size = conexion.getContentLength(); } // and here, if you want, you can load the page normally String htmlContent = ""; HttpGet httpGet = new HttpGet(urlConection); // this receives the response HttpResponse response; try { response = httpClient.execute(httpGet); if (response.getStatusLine().getStatusCode() == 200) { // la conexion fue establecida, obtener el contenido HttpEntity entity = response.getEntity(); if (entity != null) { InputStream inputStream = entity.getContent(); htmlContent = convertToString(inputStream); } } } catch (Exception e) {} webview.loadData(htmlContent, "text/html", "utf-8"); return true; } public String convertToString(InputStream inputStream){ StringBuffer string = new StringBuffer(); BufferedReader reader = new BufferedReader(new InputStreamReader(inputStream)); String line; try { while ((line = reader.readLine()) != null) { string.append(linea + "\n"); } } catch (IOException e) {} return string.toString(); } } 

मैं अभी परीक्षण नहीं कर सकता, लेकिन यह मूल रूप से आप क्या कर सकते हैं (हालांकि यह बहुत पागल है :)।

क्रिस्टियन के जवाब से प्रेरित मुझे एजेएक्स को अवरुद्ध करने की आवश्यकता है, जो वेबवॉव कर रही है, जहां मुझे कुछ जानकारी (ई-कॉमर्स ऐप में कार्ट आइटम की गिनती) के लिए प्रतिक्रिया शीर्षकों को अवरुद्ध करने की आवश्यकता है, जिसे मुझे ऐप में लाभ उठाने की जरूरत थी। जैसा कि ऐप ओक्टेप का प्रयोग कर रहा है मैंने इसे पूरा कर लिया है और यह काम कर रहा है :

  @TargetApi(Build.VERSION_CODES.LOLLIPOP) @Override public WebResourceResponse shouldInterceptRequest(WebView view, WebResourceRequest request) { Log.i(TAG,"shouldInterceptRequest path:"+request.getUrl().getPath()); WebResourceResponse returnResponse = null; if (request.getUrl().getPath().startsWith("/cart")) { // only interested in /cart requests returnResponse = super.shouldInterceptRequest(view, request); Log.i(TAG,"cart AJAX call - doing okRequest"); Request okRequest = new Request.Builder() .url(request.getUrl().toString()) .post(null) .build(); try { Response okResponse = app.getOkHttpClient().newCall(okRequest).execute(); if (okResponse!=null) { int statusCode = okResponse.code(); String encoding = "UTF-8"; String mimeType = "application/json"; String reasonPhrase = "OK"; Map<String,String> responseHeaders = new HashMap<String,String>(); if (okResponse.headers()!=null) { if (okResponse.headers().size()>0) { for (int i = 0; i < okResponse.headers().size(); i++) { String key = okResponse.headers().name(i); String value = okResponse.headers().value(i); responseHeaders.put(key, value); if (key.toLowerCase().contains("x-cart-itemcount")) { Log.i(TAG,"setting cart item count"); app.setCartItemsCount(Integer.parseInt(value)); } } } } InputStream data = new ByteArrayInputStream(okResponse.body().string().getBytes(StandardCharsets.UTF_8)); Log.i(TAG, "okResponse code:" + okResponse.code()); returnResponse = new WebResourceResponse(mimeType,encoding,statusCode,reasonPhrase,responseHeaders,data); } else { Log.w(TAG,"okResponse fail"); } } catch (IOException e) { e.printStackTrace(); } } return returnResponse; } 

मुझे उम्मीद है कि यह दूसरों के लिए सहायक हो सकता है और अगर किसी के पास सुधार के लिए कोई सुझाव है तो मैं आभारी होंगे। दुर्भाग्यवश यह केवल LOLLIPOP के साथ संगत है और इस संस्करण से जितना ऊँचा होगा, आप WebResourceRequest का उपयोग करके / हेडर वापस कर सकते हैं, जो मेरे मामले के लिए आवश्यक था।

आप अपने सभी हेडर को loadUrl को छोड़कर और जावा के एचटीटीपीआरएल कनेक्शन के जरिए अपने खुद के लोड पेज को लिखकर नियंत्रित करने में सक्षम होना चाहिए। फिर हेडर देखें, अपनी बात करें, और प्रतिक्रिया प्रदर्शित करने के लिए वेबदृश्य के लोडडेटा का उपयोग करें।

चूंकि स्वीकार्य उत्तर केवल एचटीटीपीएगेट के साथ काम करेगा, यह एक चाल है जिसकी वर्तमान में मैं उपयोग कर रहा हूं (इस समय यह काम करने लगता है)

OnPageFinished हैंडलर में, यदि कोई त्रुटि है, तो पृष्ठ का शीर्षक "ERROR_NUM – ERROR_DESCRIPTION" जैसा होगा, जैसे "500 – आंतरिक सर्वर त्रुटि", इसलिए मैं जो फ़ंक्शन में वेबव्यू से शीर्षक प्राप्त करना चाहता हूं, और फिर चेक करें शीर्षक।

view.getTitle ()