简述Java中Http/Https请求监听方法
一、工欲善其事必先利其器
做Web开发的人总免不了与Http/Https请求打交道,很多时候我们都希望能够直观的的看到我们发送的请求参数和服务器返回的响应信息,这个时候就需要借助于某些工具啦。本文将采用Fiddler2作为分析工具,Fiddler很强大,它能记录所有客户端和服务器的http和https请求,允许你监视,设置断点,甚至修改输入输出数据,是越墙抓包之利器。关于工具的介绍可以参考下面的链接:
http://www.cnblogs.com/TankXiao/archive/2012/02/06/2337728.html
工具的界面如下(拷贝了上面链接的图,
):
这里我想说要注意以下几点:
1、工具的原理实际是启动的时候为你开启了一个代理(端口是8888,默认的),关闭的时候会取消这个代理设置。如下图所示,然后所有的请求都会首先通过这个代理(localhost除外),所以它支持多种浏览器。
2、默认情况下是没有开启Https请求监听的,所以得手动开启,勾选下面的红色框框里面的东西,注意那段红色的文字哦

二、浏览器请求的监听方法
经过上面的配置,浏览器发送的Internet请求不管是http还是https都可以监听了。但是有一个例外,就是你自己电脑上的站点(localhost和127.0.0.1)还是监听不到,因为Fiddler默认忽略来自这两个地址的请求,解决的方法如下:
1、用 http://localhost. (locahost紧跟一个点号)
2、用 http://127.0.0.1. (127.0.0.1紧跟一个点号)
3、用 http://machinename (机器名)
三、Java后台工程Http和Http请求的监听方法
1、后台工程的Http请求
在默认情况下,Fiddler不能监听Java HttpURLConnection请求。究其原因,Java的网络通信协议栈可能与浏览器的通信协议栈略有区别,Fiddler监听Http请求的原理是在应用程序和操作系统网络通信层之间搭建了一个代理服务器,而Java的HttpURLConnection应该是绕过了这个代理服务器,因此Fiddler无法监听到Java HttpURLConnection请求。解决方法就是给java环境设置一个代理指向Fiddler,其方法有两种:
一是设置JVM的启动参数,MyApp是你的应用名
java -DproxySet=true -DproxyHost=127.0.0.1 -DproxyPort=8888 MyApp
二是设置环境属性
System.setProperty("http.proxyHost", "localhost");
System.setProperty("http.proxyPort", "8888");
System.setProperty("https.proxyHost", "localhost");
System.setProperty("https.proxyPort", "8888");2、后台工程的Https请求
这个就比较繁琐了,整了好久才弄明白,最主要的困难就是Https证书问题,相关的知识可以参考下面的链接:http://www.cnblogs.com/devinzhang/archive/2012/02/28/2371631.html。
我们知道SDK要发送Https请求就必须先注册该站点的证书到jre中,注册的方法如下:
其中keytool位于java jdk的 bin目录下。
要想监听后台Https请求,必须要注册两个证书,一个是该Https站点的证书,还有一个是Fiddler自己的证书。应该还记得上面第一张截图那段红色的文字吧?没错,点击那个按钮导出证书到桌面。在注册完成Https站点的证书后,再注册Fiddler的证书。然后仿照上面的方法注册证书,下面是我的机器的注册代码
C:\Users\Administrator>D:\bingoeclipse4.3win64\jdk\bin\keytool.exe -import -file
C:\Users\Administrator\Desktop\FiddlerRoot.cer -keystore FiddlerKeystore -alias
Fiddler请记得一定要注册两个证书,否则会报证书不存在错误。
经过以上的证书注册,我们应该能实现监听Https请求了,但是还有一个问题,那就是前面多次提到的Fiddler会忽略localhost的请求,所以我们还是要配置一个代理指向Fiddler,在JVM的启动参数的地方配置如下信息:
我用的是Intell IDEA编辑器,Eclipse只是配置的地方不同而已,个人感觉IDEA比较好用,智能提示很强。
经过以上的配置和注册处理,现在运行起来应该能监听Https的请求了,效果图如下。
现在老板再也不用担心我的请求了,哪里不会点哪里……
简述Java中Http/Https请求监听方法的更多相关文章
- 关于JAVA中事件分发和监听机制实现的代码实例-绝对原创实用
http://blog.csdn.net/5iasp/article/details/37054171 文章标题:关于JAVA中事件分发和监听机制实现的代码实例 文章地址: http://blog.c ...
- java中的四种监听类用法
在此列举四种方法: 自身类实现ActionListener接口,作为事件监听器 通过匿名类处理 通过内部类处理 通过外部类处理 下面依次介绍: 第一种:自身类实现ActionListener接口,作为 ...
- java中的key事件监听机制
package com.at221; import java.awt.event.KeyAdapter; import java.awt.event.KeyEvent; import javax.sw ...
- java实现 HTTP/HTTPS请求绕过证书检测代码实现
java实现 HTTP/HTTPS请求绕过证书检测代码实现 1.开发需求 需要实现在服务端发起HTTP/HTTPS请求,访问其他程序资源. 2.URLConnection和HTTPClient的比较 ...
- SpringBoot 中发布ApplicationEventPublisher,监听ApplicationEvent 异步操作
有这么一个业务场景:当用户注册后,发送邮件到其邮箱提示用户进行账号激活,且注册成功的同时需要赠送新人用户体验卡券. 业务有了,那么问题也就来了. What? 问题....问题?我听说你有问题? 来拔刀 ...
- Java实现 HTTP/HTTPS请求绕过证书检测
java实现 HTTP/HTTPS请求绕过证书检测 一.Java实现免证书访问Https请求 创建证书管理器类 import java.security.cert.CertificateExcepti ...
- Android 开发中的View事件监听机制
在开发过程中,我们常常根据实际的需要绘制自己的应用组件,那么定制自己的监听事件,及相应的处理方法是必要的.我们都知道Android中,事件的监听是基于回调机制的,比如常用的OnClick事件,你了解它 ...
- Unity中利用委托与监听解耦合的思路
这篇随笔是一篇记录性的随笔,记录了从http://www.sikiedu.com/my/course/304,这门课程中学到的内容,附带了一些自己的思考. 一.单例模式的应用 首先假想一种情况,现在需 ...
- Unity3D热更新之LuaFramework篇[04]--自定义UI监听方法
时隔一个多月我又回来啦! 坚持真的是很难的一件事,其它事情稍忙,就很容易说服自己把写博客的计划给推迟了. 好在终于克服了自己的惰性,今天又开始了. 本篇继续我的Luaframework学习之路. 一. ...
随机推荐
- pomelo 的一些监控和维护插件(工具)
POMELO 提供了非常多的插件,可以方便我们日常对其的一些操作和开发工作,同样的我们也可以自己开发一些定制的插件让其伴随整个POMELO的生命周期运作(这里 不是要介绍如何制作POMELO插件),这 ...
- KKT原理以及SVM数学的理论推导分析
一直很好奇机器学习实战中的SVM优化部分的数学运算式是如何得出的,如何转化成了含有内积的运算式,今天上了一节课有了让我很深的启发,也明白了数学表达式推导的全过程. 对于一个SVM问题,优化的关键在于 ...
- 每日Linux命令(2)-cal
cal命令用来显示公历,公历是现在国际通用的历法. 一.格式 cal [选项] [参数] 二.功能 显示当前日历年月日,也可以指定显示某年全年日历及时间. 三.命令选项 -h 关闭今天显示的高亮 -j ...
- Linux下C语言编译的问题
在Linux下编程发现一个诡异的现象,就是在链接一个静态库的时候总是报错,类似下面这样的错误: (.text+0x13): undefined reference to `func' 关于undefi ...
- MLT的学习理解
MLT的学习理解 MLT是一个开源的多媒体库,我们的音视频编辑工具,是使用它作为底层支持,某司的'快剪辑'pc版和安卓版,也是用的它. MLT简介 它的GitHub地址,这个库比较老了,现在只有一个作 ...
- python 模块路径查找 及 添加
**** python 模块路径查找: 通过模块的__file__属性来确定: **** 模块路径添加: 方法一:函数添加1 import sys2 查看sys.path3 添加sys.path.ap ...
- 自定义udf添加一列
//创建得分窗口字典 var dict= new mutable.HashMap[Double, Int]() ){ dict.put(result_Score(i),i) } //自定义Udf函数 ...
- NIH周三讲座视频爬虫
最近网是越来越差了,在线播放基本是没戏了,所以就动了爬虫下载的念头. NIH把视频片段存放,一般都是8秒一段,大概看下视频长度估算一下片段个数就差不多了. 新建一个NIH的文件夹,然后把爬虫下来的.t ...
- 20155220 2016-2017-2《Java程序设计》第五周学习总结
20155220 2016-2017-2<Java程序设计>第五周学习总结 教材学习内容总结 异常处理 Java异常处理通过5个关键字try.catch.throw.throws.fina ...
- 20155233 2016-2017-2《Java程序设计》课程总结
20155233 2016-2017-2<Java程序设计>课程总结 每周作业链接汇总 预备作业1:预习去写博客,如何达到理想的师生关系. 预备作业2:对自己C语言的学习进行了解与认识. ...
):



