简述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请求监听方法,布布扣,bubuko.com

时间: 2024-10-13 22:25:39

简述Java中Http/Https请求监听方法的相关文章

关于JAVA中事件分发和监听机制实现的代码实例-绝对原创实用

http://blog.csdn.net/5iasp/article/details/37054171 文章标题:关于JAVA中事件分发和监听机制实现的代码实例 文章地址: http://blog.csdn.net/5iasp/article/details/37054171 作者: javaboy2012Email:[email protected]qq:    1046011462 一.场景假设 假设有博客系统中需要实现如下功能: 系统中用户发布文章,修改文章,删除文章时,需要一些相关的操作

JAVA中按钮的事件监听的三种方式

JAVA中的Swing组件,按钮的重点是进行事件的监听,可以通过调用JButton的addActionListener()方法.这个方法接受一个实现ActionListener接口的对象作为参数,ActionListener接口中只包含一个actionPerformed()方法,所以如果想把事件处理的代码与JButton进行关联,就需要如下的三种做法: 第一种: public class Button extends MyFrame {    private JButton        b1

java中的四种监听类用法

在此列举四种方法: 自身类实现ActionListener接口,作为事件监听器 通过匿名类处理 通过内部类处理 通过外部类处理 下面依次介绍: 第一种:自身类实现ActionListener接口,作为事件监听器. 这种方法是最基本的,也是初学者经常使用的,我当初即是如此. import java.awt.Color; import java.awt.Container; import java.awt.FlowLayout; import java.awt.event.ActionEvent;

java中的key事件监听机制

package com.at221; import java.awt.event.KeyAdapter; import java.awt.event.KeyEvent; import javax.swing.JFrame; public class TestKey { public static void main(String[] args) { JFrame f = new JFrame(); f.addKeyListener(new MyKeyListener()); f.setVisib

4.JAVA之GUI编程事件监听机制

事件监听机制的特点: 1.事件源 2.事件 3.监听器 4.事件处理 事件源:就是awt包或者swing包中的那些图形用户界面组件.(如:按钮) 事件:每一个事件源都有自己特点有的对应事件和共性事件.(如:鼠标单击事件) 监听器:将可以触发某一事件的动作(不止一个动作)都已经封装到了监听器中. 以上三者,在java中都已经定义好了,直接获取其对象来用就可以了. 我们要做的事情是,就是对产生的动作进行处理. 图解事件监听机制: 4.JAVA之GUI编程事件监听机制,布布扣,bubuko.com

如何为JOPtionPane的showConfirmDialog对话框中的按钮设置监听

最近刚学了java图形界面编程,想独立写个记事本,过程当中想要为对话框中的按钮设置监听,但是查看了一下api也没找到相应的方法,只找到这个: Returns: an integer indicating the option selected by the user showConfirmDialog这个方法只返回一个int值来标识用户选择了哪一个按钮.找了半天也没找到设置监听的方法..... 就在这时.....灵光一闪~~~~ 很多方法在正常情况下是返回0的,非正常情况返回-1. 于是我就用如

Java接口回调实现按钮监听

做Android开发的时候,经常碰到View的事件监听,虽然一直在用,但从未思考它的实现原理.还有回调函数虽然经常听说,但是总感觉很晕,一想脑袋就开始乱了.所以今天就写点东西来理一下思路. 回调函数 以下是维基百科上的定义: 在计算机程序设计中,回调函数,或简称回调(Callback 即call then back 被主函数调用运算后会返回主函数),是指通过函数参数传递到其它代码的,某一块可执行代码的引用.这一设计允许了底层代码调用在高层定义的子程序. 光看定义可能晦涩难懂,下面还是回到标题,用

Unity中利用委托与监听解耦合的思路

这篇随笔是一篇记录性的随笔,记录了从http://www.sikiedu.com/my/course/304,这门课程中学到的内容,附带了一些自己的思考. 一.单例模式的应用 首先假想一种情况,现在需要有一个按钮和一个Text,当按下按钮时,Text上显示“你好”两个字. 一个最常见的方法是在按钮下挂载一个脚本BtnClick,它持有一个Text组件,它由外部的Text拖入来赋值. 在初始化时BtnClick会获取当前游戏物体下的Button组件并为其添加监听,当按下按钮时会修改Text组件中的

QT中使用Event Filter监听按钮事件,Release后按钮不见

Accepted : 42   Submit : 122 Time Limit : 1000 MS   Memory Limit : 65536 KB 题目描述 五虎棋是流传在东北民间的一种游戏,GG小的时候,经常被表哥虐得很惨. 由于各个地区的规则可能不大相同,并且GG的回忆不一定很准,所以,如果规则和你平常玩的的有冲突,请以这里为主. 棋盘是横五条,纵五条直线,形成25个交叉点,双方轮流把棋子放到交叉点上 (由于所需各自和棋子数目不多,才12+13,GG小的时候,用的是象棋的棋盘和棋子,真的