简述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学习之路. 一. ...
随机推荐
- HIve常用CLI命令
1. 清楚屏幕:Ctrl+L 或者!Clear 最后加上分号 2. 查看数据仓库中的表:show tables; 3. 查看数据仓库中内置函数:show functions: 4. 查看表结构 :de ...
- Security 安全框架1
security 过滤器链 检查请求是否有请求信息-主要校验规则 UsernamePasswordAuthenticationFilter: 处理表单登录, 请求是否带用户名密码 BasicAuthe ...
- Altiun designer问题汇总(不断更新)
(1)元件库-引脚名称被矩形方框遮住 该问题可能是因为设置中文版而产生的错误,可以尝试在旁边再摆一个矩形,并且摆上引脚观察是否会被隐藏.如果还存在该现象,先将版本语言改为原版(英文版),再重新绘制即可
- abc sort
c: #include<stdio.h>//从大到小 int main(){ int a, b, c; int x = 0; printf("input message:\n&q ...
- Go语言基础-序言
2018年6月,第一次接触go语言,在之后通过多本书籍渐渐了解go语言之后,开启了自己go语言全栈工程师的道路.特此记录,希望能给后学的朋友提供一个方向. 语言是一门寻寻渐进的课程,结合自己这两个月的 ...
- 【LG5018】[NOIP2018pj]对称的二叉树
[LG5018][NOIP2018pj]对称的二叉树 题面 洛谷 题解 看到这一题全都是用\(O(nlogn)\)的算法过的 考场上写\(O(n)\)算法的我很不开心 然后就发了此篇题解... 首先我 ...
- python的rtree包缺失libspatiaindex.so
1 准备autoconf工具 yum -y install autoconf automake libtool 2 准备g++编译器 yum -y install gcc gcc-c++ 3 下载并安 ...
- 视觉SLAM中的深度估计问题
一.研究背景 视觉SLAM需要获取世界坐标系中点的深度. 世界坐标系到像素坐标系的转换为(深度即Z): 深度的获取一共分两种方式: a)主动式 RGB-D相机按照原理又分为结构光测距.ToF相机 To ...
- python-编程从入门到实践
python-编程从入门到实践 1.python文件后缀名: .py 是Python的源码文件,由Python.exe解释. .pyc 是Python的编译文件.pyc 文件往往代替 py 文件发布: ...
- Linux权限管理命令
查询linux命令用法网址:cht.sh 1.chmod——改变文件/目录的权限 用法: ① chmod [{ugoa}{+-=}{rwx}] [文件/目录] ---给文件的(用户.所属组.其他人 ...