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

遇到的一个通用的需求就是用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));
    }

测试方法

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

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

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值