HttpWatch及文件上传

一、HttpWatch插件:

(一)、介绍:

        HttpWatch是强大的网页数据分析工具.集成在IE工具栏.包括网页摘要、Cookies管理、缓存管理、消息头发送/接受、字符查询、POST数据和目录管理功能。

        只需要选择相应的网站,软件就可以对网站与IE之间的请求和回复的通讯情况进行分析并显示其日志记录。每一个HTTP记录都可以详细的分析其 Cookies、头信息、字符查询、POST数据等信息。

(二)、目的:

        使用这个IE插件,目的是为了更透彻地理解客户端机器和服务器之间是如何通讯的,更透彻地理解GET和POST。更重要地是在模拟浏览器访问网络时,需要通过很多setRequestProperty()方法设置很多头信息。什么是头信息,到底有哪些头信息需要设置。通过httpWatch能帮同学们很好的理解这一点。

 

<headers>
        <header name="Accept">image/gif, image/x-xbitmap, image/jpeg, image/pjpeg, application/x-shockwave-flash, application/xaml+xml, application/vnd.ms-xpsdocument, application/x-ms-xbap, application/x-ms-application, application/msword, application/vnd.ms-excel, application/vnd.ms-powerpoint, */*</header>
        <header name="Accept-Encoding">gzip, deflate</header>
        <header name="Accept-Language">zh-cn</header>
        <header name="Cache-Control">no-cache</header>
        <header name="Connection">Keep-Alive</header>
        <header name="Content-Length">37</header>
        <header name="Content-Type">application/x-www-form-urlencoded</header>
        <header name="Cookie">PHPSESSID=dccscri3qftumao92bll8ia933</header>
        <header name="Host">127.0.0.1</header>
        <header name="User-Agent">Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; .NET CLR 2.0.50727; .NET CLR 3.0.04506.30; Shuame)</header>
</headers>

【备注:】上述的头信息中Accept中是文件的MIME格式。那么什么是MIME呢?【扩展知识,要能见到MIME格式,知道它所代表的含义】

  1. 概念:MIME意为多功能Internet邮件扩展,它设计的最初目的是为了在发送 电子邮件时附加多媒体数据,让邮件客户程序能根据其类型进行处理。然而当它被HTTP协议支持之后,它的意义就更为显著了。它使得HTTP传输的不仅是普通的文本,而变得丰富多彩。
  2. 每个MIME类型由两部分组成,前面是数据的大类别,例如声音audio、图象image等,后面定义具体的种类
  3. 常见的MIME类型(通用型):
  • 超文本标记语言文本 .html          text/html
  • xml文档 .xml                               text/xml
  • XHTML文档 .xhtml                     application/xhtml+xml
  • 普通文本 .txt                               text/plain
  • RTF文本 .rtf                               application/rtf
  • PDF文档 .pdf                             application/pdf
  • Microsoft Word文件 .word         application/msword
  • PNG图像 .png                            image/png
  • GIF图形 .gif                                image/gif
  • JPEG图形 .jpeg,.jpg                  image/jpeg
  • au声音文件 .au                          audio/basic
  • MIDI音乐文件 mid,.midi              audio/midi,audio/x-midi
  • RealAudio音乐文件 .ra, .ram     audio/x-pn-realaudio
  • MPEG文件 .mpg,.mpeg             video/mpeg
  • AVI文件 .avi                               video/x-msvideo
  • GZIP文件 .gz                             application/x-gzip
  • TAR文件 .tar                             application/x-tar
  • 任意的二进制数据                     application/octet-stream

 

【备注:】以下是扩展知识,关于常见浏览器的User-Agent的信息。仅作为了解。

1、IE 

  而IE各个版本典型的userAgent如下: 

  Mozilla/4.0 (compatible; MSIE 8.0; Windows NT 6.0) 

  Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.2) 

  Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1) 

  Mozilla/4.0 (compatible; MSIE 5.0; Windows NT) 

  其中,版本号是MSIE之后的数字。 

 

2、Firefox 

  Firefox几个版本的userAgent大致如下: 

  Mozilla/5.0 (Windows; U; Windows NT 5.2) Gecko/2008070208 Firefox/3.0.1 

  Mozilla/5.0 (Windows; U; Windows NT 5.1) Gecko/20070309 Firefox/2.0.0.3 

  Mozilla/5.0 (Windows; U; Windows NT 5.1) Gecko/20070803 Firefox/1.5.0.12  其中,版本号是Firefox之后的数字。 

 

3、Opera 

  Opera典型的userAgent如下: 

  Opera/9.27 (Windows NT 5.2; U; zh-cn) 

  Opera/8.0 (Macintosh; PPC Mac OS X; U; en) 

  Mozilla/5.0 (Macintosh; PPC Mac OS X; U; en) Opera 8.0  

  其中,版本号是靠近Opera的数字。 

 

4、Safari (苹果的浏览器)

  Safari典型的userAgent如下: 

  Mozilla/5.0 (Windows; U; Windows NT 5.2) AppleWebKit/525.13 (KHTML, like Gecko) Version/3.1 Safari/525.13 

  Mozilla/5.0 (iPhone; U; CPU like Mac OS X) AppleWebKit/420.1 (KHTML, like Gecko) Version/3.0 Mobile/4A93 Safari/419.3 

  其版本号是Version之后的数字。 

 

5、Chrome (Google的浏览器)

  目前,Chrome的userAgent是: 

Mozilla/5.0 (Windows; U; Windows NT 5.2) AppleWebKit/525.13 (KHTML, like Gecko) Chrome/0.2.149.27 Safari/525.13  

  其中,版本号在Chrome之后的数字。 

 

 

(三)、安装HttpWatch后效果:

1、浏览器工具栏中有一项:httpwatch professional

    或者在浏览器页面中右击,上下文菜单中有httpwatch 选项。

 

2、运行httpwatch 后页面效果:

 

3、点击Record可以记录,点击Stop停止。

 

4、打开百度页面,搜索信息,观察Headers栏有什么变化?

 

(四)、上传附件示例:

上传完成后,记录下的Header截图:


5、上传完成后,记录下的Stream截图:【备注:该截图很重要,通过该截图,便于我们理解上传文件的java代码的写法

6、上传完成,记录下的Stream的完整代码:

POST /JavaServer2/UploadServlet HTTP/1.1

Accept: image/gif, image/jpeg, image/pjpeg, image/pjpeg, application/x-shockwave-flash, */*

Referer: http://localhost:8080/JavaServer2/upload.html

Accept-Language: zh-cn

User-Agent: Mozilla/4.0 (compatible; MSIE 8.0; Windows NT 5.1; Trident/4.0)

Content-Type: multipart/form-data; boundary=---------------------------7dece2b30264

Accept-Encoding: gzip, deflate

Host: localhost:8080

Content-Length: 84185

Connection: Keep-Alive

Cache-Control: no-cache

Cookie: JSESSIONID=1D86C102F930B5ABE7A89CB3E314FA9D

-----------------------------7dece2b30264

Content-Disposition: form-data; name="username"

-----------------------------7dece2b30264

Content-Disposition: form-data; name="password"

-----------------------------7dece2b30264

Content-Disposition: form-data; name="uploadFile"; filename="Water lilies.jpg"

Content-Type: image/pjpeg

以下代码貌似乱码,实际上是上传文件的二进制流文件内容

 

-----------------------------7dece2b30264--

 

 

【备注:】思考以上代码中的“-----------------------------7dece2b30264”。

在头信息中有,在表单控件每个前面都有这段代码。在上传附件前也有,上传完毕后,也有。但是注意区别。

---------------------------7dece2b30264

-----------------------------7dece2b30264

-----------------------------7dece2b30264

-----------------------------7dece2b30264--

长度不同,而且附件上传完毕后,最后还有两个—。

 

 

【附加:】核心代码:


请注意在上传附件的源码中定义了以下三个常量。

NEWLINE代表换行;
PREFIX 是上传完毕后,最后的那两个--
BOUNDARY就是“---------------------------7dece2b30264”这段符号。这段符号可以用任何符号先代替。避免每次都写,容易多写或者少写-,总之是避免出错。

final String NEWLINE = "\r\n";
final String PREFIX = "--";
final String BOUNDARY = "#";
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值