webView中获取response头部信息

来源:互联网 发布:联合舰队 知乎 编辑:程序博客网 时间:2024/05/20 03:39

转自:http://stackoverflow.com/questions/3134389/access-the-http-response-headers-in-a-webview/3134609#




Neither WebView nor WebViewClient provide methods to do that, Though, you can try to implement that manually. You can do something like this:




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 webviewprivate 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();    }}



0 1