在IntelliJ idea中使用fiddler捕获Web请求

来源:互联网 发布:美国新屋开工数据 编辑:程序博客网 时间:2024/06/08 18:54

遇到的一个通用的需求就是用java程序来写get或post程序时如果能够捕获http请求和响应的过程,那会是很有帮助的。
通过fiddler可以实现以上的需求。

步骤1:安装fiddler 参考这里
【HTTP】Fiddler(一) - Fiddler简介

步骤2:在java程序中使用
模拟get请求的静态方法

    /**     * 模拟get请求服务器资源     * @param strUrl     */    public static void mimicGet(String strUrl) {        //使程序通过代理服务器( proxy server )访问Web        //代理服务器接收到从本地客户端到远程服务器的请求。代理服务器向远程服务器发出请求,再将结果转发回本地客户端。        //此处代理服务器就是fiddler        //在Java代码中调用System.setProperty ()        //使用纯粹的HTTP代理,将http.proxyHost设置为代理服务器的域名或IP地址        System.setProperty("http.proxyHost", "127.0.0.1");        System.setProperty("https.proxyHost", "127.0.0.1");        System.setProperty("http.proxyPort", "8888");        System.setProperty("https.proxyPort", "8888");        try {            URL u = new URL(encodeUrl(strUrl));            try {                try (InputStream in = new BufferedInputStream(u.openStream())) {                    InputStreamReader theHTML = new InputStreamReader(in);                    int c;                    while ((c = theHTML.read()) != -1) {                        System.out.print((char) c);                    }                }            } catch (MalformedURLException ex) {                System.err.println(ex);            } catch (IOException ex) {                System.err.println(ex);            }        } catch (MalformedURLException e) {            e.printStackTrace();        }}    /**     * 将queryString转换为utf-8编码的16位ASCII字符串     * https://www.baidu.com/search?wd=木&rsv_spt=1     * @param queryString 为wd=木&rsv_spt=1     * @return     */    public static String encodeQueryString(String queryString) {        StringBuilder sb = new StringBuilder();        String[] split = queryString.split("&");        for (String str : split) {            String[] split1 = str.split("=");            try {                sb.append(URLEncoder.encode(split1[0], "utf-8"));                sb.append("=");                sb.append(URLEncoder.encode(split1[1], "utf-8"));            } catch (UnsupportedEncodingException e) {                e.printStackTrace();            }            sb.append("&");        }        String s = sb.toString();        return s.substring(0,s.length() - 1);    }    /**     * 将url字符串转换为utf-8编码的16位ASCII字符串     * @param urlStr     * @return     */    public static String encodeUrl(String urlStr) {        int index = urlStr.lastIndexOf("?")+1;        return urlStr.substring(0, index) + encodeQueryString(urlStr.substring(index));    }

测试方法

@Testpublic void testMimicGet() {    String str = "http://www.baidu.com/s?wd=木";    WebUtil.mimicGet(str);}

Fiddler成功捕获
这里写图片描述

原创粉丝点击