有一种方法可以在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(); } }
我现在无法测试它,但这基本上就是你可以做的(尽管它非常疯狂:).