简述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学习之路. 一. ...
随机推荐
- [试玩] FMXLinux (Firemonkey for Linux) Linux 桌面开发(第三方插件)
FMXLinux 是一个可以用来开发 Linux 桌面软件的第三方插件,它需要配合 Delphi 10.2 Toyko 官网:http://www.fmxlinux.com/ 使用方法:开启 FMX ...
- TF-IDF介绍
TF-IDF是什么 TF-IDF是一种统计方法,用以评估一个词对于一篇文章或语料库中一篇文章的重要性.字词的重要性随着它在文件中出现的次数成正比增加,但同时会随着它在语料库中出现的频率成反比下降. T ...
- windows提权之前的信息收集
0x00 基本信息 -获取主机名:hostname或者echo %COMPUTERNAME% -获取所属域信息:systeminfo 获取环境变量:set 0x01 获取系统安装的软件信息 -导出注册 ...
- 【 C 】字符串常量
当一个字符串常量出现在表达式中时,它的值是个指针常量.编译器把这些指定字符的一份拷贝存储在内存的某个位置,并存储一个指向第一个字符的指针.但是,当数组名用于表达式中时,它们的值也是个指针常量.我们可以 ...
- Pytorch之认识Variable
Tensor是Pytorch的一个完美组件(可以生成高维数组),但是要构建神经网络还是远远不够的,我们需要能够计算图的Tensor,那就是Variable.Variable是对Tensor的一个封装, ...
- ASP.NET <% %>的各种形式用法
1.<% %>用来绑定后台代码 < % ;i<;i++) { Reaponse.Write(i.ToString()); } %> 2.<%# %> 是在绑定 ...
- flex stacked column graph
Flex: Stacked column chart – programmatically in actionscript By bishopondevelopment I was looking f ...
- 20155220 实验一《Java开发环境的熟悉》实验报告
实验一Java开发环境的熟悉 实验内容 1.使用JDK编译.运行简单的Java程序: 2.使用Eclipse 编辑.编译.运行.调试Java程序. 实验知识点 1.JVM.JRE.JDK的安装位置与区 ...
- mycp 补交作业
老师好:我昨天做完时已经是11点多了,错过了提交时间,希望用此篇博客弥补一下我的过失. import java.io.; import java.lang.; import java.util.Sca ...
- Linux 用C语言实现简单的shell(1)
发一波福利,操作系统的实验内容,大家可以借鉴一下,不过我的代码可能也存在一定的问题. 因为在一开始老师是一节一节课教的,当时并不知道后面还会用输入输出重定向,管道等一系列问题,我的兴趣也不在这个方面也 ...
):



