用java解析HTTP请求报头.doc_第1页
用java解析HTTP请求报头.doc_第2页
用java解析HTTP请求报头.doc_第3页
用java解析HTTP请求报头.doc_第4页
用java解析HTTP请求报头.doc_第5页
免费预览已结束,剩余3页可下载查看

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

用java解析HTTP请求报头 IT初始化H)fGZ用java解析HTTP请求报头GbY$gdM0 $_0O h A Q(A2IT D0IT初始化d8MX Z:ntRvJava代码1I QA:| Pv0/* eq#U#_(L0* 传入一个Socket对象,解析出通过该对象传入这个链接中的所有HTTP请求信息IT初始化4jUD |-s?N*IT初始化:c u ywrY* param clientIT初始化.d? MD+iB*/IT初始化2kptx%Dprivate void getRequset(Socket client) 6B7(X(_!pr H0try IT初始化+WN:G#CVInputStream in = client.getInputStream();IT初始化;DJw%wF_aB.HI FTInputStreamReader reader = new InputStreamReader(in);!8b+n.a:/a0BufferedReader bd = new BufferedReader(reader);/三重封装e?6NN p;0String t = null;IT初始化_!Z:l/Vr;KW3Ltx(nzW:VW0while (t = bd.readLine() != null) IT初始化2u)s h 1x5gjC8System.out.println(t);&D;vs+Adjh0parser(t);/解析每一句的方法IT初始化c_)CclIT初始化L bk3Y)KM2V catch (Exception ef) IT初始化;c:v(UMHLef.printStackTrace();b h9ESMUC8F0System.out.println(getRequset error-);5K Q |4I3 y0IT初始化1i;e R:E*| |&N_3cj%U:r0IT初始化7k/.VH8emq /*;J-oT;A$yf6k0* 传入一个Socket对象,解析出通过该对象传入这个链接中的所有HTTP请求信息4 v!Le/j0J!SWD0*n5BM5)P0* param clientIT初始化*Px$g SFl.L!CYk|-M*/6_3H XV7E i W(M0private void getRequset(Socket client) G)X;,k9J)c8sz0try hdrGu4Q0InputStream in = client.getInputStream();WCA l l/0InputStreamReader reader = new InputStreamReader(in);UJ$BzU3A4u,b(c8QN0BufferedReader bd = new BufferedReader(reader);/三重封装U hQ.z$g-Ya _0String t = null;*d&v r,Ft;v0IT初始化:YZ? ODiTQ_ while (t = bd.readLine() != null) IT初始化boj!K6l!System.out.println(t);2v 9Br R5bwq$x0parser(t);/解析每一句的方法h4H)GI2J0I L07uz0 catch (Exception ef) |g a0j)Fn*Jt3I0ef.printStackTrace();Hm M#B P0System.out.println(getRequset error-);ti A:?-B0CA+B:GMKR0Qr.i0IT初始化Zw COIT初始化W7b3J-Doe ;a-q.O-v!nR0IT初始化8zIuJ+k2Vo7?%h 9g*Kd7g;P0h:b0 *U:Ru&P r6?4E:T0)A+jh8;,vQy3H0信息如下3X%y1Z3mZ?g ?O0GET /index HTTP/1.1IT初始化 Ev+cRB e+eoo:i C!eUser-Agent: Opera/9.80 (Windows NT 6.1; U; Edition IBIS; zh-cn) Presto/2.6.30 Version/10.634l6FGZ2nd0Host: localhost:81IT初始化y#x?JAccept: text/html, application/xml;q=0.9, application/xhtml+xml, image/png, image/jpeg, image/gif, image/x-xbitmap, */*;q=0.1IT初始化r%d r4wB*hO6Bdv k5qAccept-Language: zh-CN,zh;q=0.9,en;q=0.8IT初始化 Qw B;D qAccept-Charset: iso-8859-1, utf-8, utf-16, *;q=0.1IT初始化P/z2s4T2X+X2FUAccept-Encoding: deflate, gzip, x-gzip, identity, *;q=0gkJ%TLQ0Connection: Keep-Alive1v6v7w+_g*T0/注意,此处两行空格也为HTTP请求的一部分IT初始化zO W.MLIT初始化)G*ZjRZ$ IT初始化6h;D 1?C8M YmC72u6w/vrn0K6t0,F_(f4E.R.GoQ0 RM /gA6ul0IT初始化zVBH!j)-Y b2MIT初始化x kN TXu7S?Sk 我们又都知道IT初始化N+S)hxf_yI? ZkM qK3O0在Tomcat中IT初始化ok9rw!_W.uAkIT初始化$v8zRr:?3K)v,#I 所有的请求信息pf+OAy0IT初始化p&P3JTc!$y IT初始化(V2v*k/R_7w8EtIT初始化97Tl1xGG%Yn: 我们都已经封装好3CdFSV(o r0 j+_*pul)I$z0放入一个HttpRequest对象中IT初始化 S6s$uSIT初始化 Oip:E0U(k z1XA1Z D/C S0IT初始化QY?7z- 在我们自己山寨的Tomcat中IT初始化6iFF+9t _&eIT初始化0nsu2hk2dPUv;J 因为得到的Http请求是一个字符串DXb| z3t0 A+t3v:;r0d9y8i0要得到我们需要的信息IT初始化-d0KkZ,xHkS8mwIT初始化o w:d;q%n)HV 0+dZ KKh?B0 H7g-s Msk h8p#f0也必须对此字符串进行解析IT初始化ji&w&i2x;ru p(XS:X)wvKD D0将解析后的字符串放入一个Request对象中#vLg2mY%G#pt0 4L-MF d-Y7B )0-s iP# y,Me(K0IT初始化Ua4C Requst类源码如下IT初始化8v,VQ9q#B8ZJRCaE8s#q Qw0Java代码IT初始化&h+(FZ#U:rg2Java代码IT初始化;F;w:A-wWOpublic class Request jP.PK9tW0private String method;/ 请求方法IT初始化/DRoW$C2S5M8sX:qprivate String protocol;/ 协议版本v&FcMoR hE1vh0private String requestURL;_/4z)LQU.O6o$h0private String requestURI;/请求的URI地址 在HTTP请求的第一行的请求方法后面IT初始化;s:TmH LFn1WIo3puprivate String host;/请求的主机信息IT初始化,w j*y*hOprivate String Connection;/Http请求连接状态信息 对应HTTP请求中的ConnectionIT初始化BL;zJt#-km0?private String agent;/ 代理,用来标识代理的浏览器信息 ,对应HTTP请求中的User-Agent:no$C,q+NShu:D0private String language;/对应Accept-LanguageIT初始化-b U0gp4y v$Xp0vprivate String encoding;/请求的编码方式 对应HTTP请求中的Accept-EncodingIT初始化6u-l2u6XPprivate String charset;/请求的字符编码 对应HTTP请求中的Accept-CharsetIT初始化Oi5DWPX?F Aprivate String accept;/ 对应HTTP请求中的Accept;IT初始化:?5P oXw%L2j)g1VuIT初始化w#gC-kIT初始化:d8U0ej ogetter() setter()IT初始化%m5!xez)g3t/za9a:cS gU0,l D%ZV*p/R7Z0IT初始化;H_s !b public class Request zW1v T#M8I h0private String method;/ 请求方法t&Be|K9mR;l0private String protocol;/ 协议版本IT初始化e*WM#xXmprivate String requestURL;IT初始化q#JCV8c)Q3h(Vprivate String requestURI;/请求的URI地址 在HTTP请求的第一行的请求方法后面s4GtX7f#E&yPL6Ds0private String host;/请求的主机信息3U )qhm:v1rs0private String Connection;/Http请求连接状态信息 对应HTTP请求中的ConnectionIT初始化f,Y&I/FC+C9np g4E(nprivate String agent;/ 代理,用来标识代理的浏览器信息 ,对应HTTP请求中的User-Agent:IT初始化)nJ6KG! Iprivate String language;/对应Accept-LanguageIT初始化|G1T(uXprivate String encoding;/请求的编码方式 对应HTTP请求中的Accept-EncodingIT初始化de&pXz9jprivate String charset;/请求的字符编码 对应HTTP请求中的Accept-CharsetIT初始化7t,AH6e d t5bprivate String accept;/ 对应HTTP请求中的Accept;z8S%W M9o+O0 K*8vj9/g%_*o N0W7dAC k3B)U0getter() setter()IT初始化P e4lQo*fGKIS20IT初始化H#KKv gP/sd0T d|v0s,_Yq,h0IT初始化 Z+vfIo-IT初始化/ deTp3RH IT初始化%ZX mrijL7yu3P pW0有了用来存放封装后信息的Request类Q5D$ygqZ(B0IT初始化(EE6jS)pKFc 有了请求信息的字符串IT初始化wF)RA6_ow3Y6j5xO9wIT初始化 w v0c9Lko;R 接下来pdS/8Nz0 9w)Y2i4oyQ W0我们只需要将字符串解析IT初始化)m7I6;p_UI0并且存放在Request对象中IT初始化,O*U-P-v6vK;m-FWosRG1d(L:V0IT初始化IYmZ&a,L#if nMP0_l u _e0源代码如下(aY B 1 Qoe1lvwu0IT初始化SOna$Xu ?5aMcJ.F-F)6j0Java代码?(iA9UO#PE6Tm(0Java代码6N;,eF4Z-f0|.M/I0/*IT初始化 a;Dn Y* 传入HTTP请求中需要解析的某一句 解析该句,并请放入对应的Request对象中49H K(HK8C n$J0*0Z O5G7 w)9EM0* param s)VZkF N0*/?ml qW0private void parser(String s) t8W$b wqA0if (s.startsWith(GET) ,j#V#A(JY KJj+1c1S0String method = Get;v:Xg&M9GH0request.setMethod(method);IT初始化 27Mk,C2fdx4X&H&wkIT初始化-A&A3c/j!n3I5o/P)xint index = s.indexOf(HTTP);A6FL(F3f)T MEj7ks0System.out.println(index- + index);w9Ad/S l6CF9O0String uri = s.substring(3 + 1, index - 1);/ 用index-1可以去掉连接中的空格)aCN+N/;z0System.out.println(uri- + uri);IT初始化:r9q.C_u2Bpp1request.setRequestURI(uri);6u;*Ke-I0r1r)GY6pv&t#0String protocol = s.substring(index);psc5h dUW7E0System.out.println(protocol- + protocol);IT初始化/Kp%W&K0F2L?request.setProtocol(protocol);IT初始化v, | SH else if (s.startsWith(POST) IT初始化qF(O(GjmywString method = POST;IT初始化E:|? GG/kZ Jrequest.setMethod(method);.lzRf#a$h&O0IT初始化Eo6g$_eint index = s.indexOf(HTTP);IT初始化X0_q+Fg System.out.println(index- + index);IT初始化 Z5UF6iF4rr2y$?q!HString uri = s.substring(3 + 1, index - 1);/ 用index-1可以去掉连接中的空格IT初始化e%_TSC6Jv,P|System.out.println(uri- + uri);v)NkHX_-v LDx0request.setRequestURI(uri);IT初始化OQs/W?R/S yS:?U%q1ke |:w-T0String protocol = s.substring(index);_+M2w7|8cM0System.out.println(protocol- + protocol);IT初始化G?m.e7n.|hrequest.setProtocol(protocol);IT初始化a,S;Hm*&x8Aa5l jF2TIT初始化-ehX,WE%EWw0v%s else if (s.startsWith(Accept:) IT初始化9p,wU Z;M;E#_String accept = s.substring(Accept:.length() + 1);j;Fe*pK b(|0System.out.println(accept- + accept);V:wB6p_0request.setAccept(accept);IT初始化-l Z4jBb(IT初始化Er*b* z-yEX else if (s.startsWith(User-Agent:) Is!Q$TvNK x_0String agent = s.substring(User-Agent:.length() + 1);IT初始化%V-wJ dnUSPSystem.out.println(agent- + agent);b#c8k6O4Y Yp9k?0request.setAgent(agent);IT初始化 qNpk8en w*I2bK _3U9ohn7N0 else if (s.startsWith(Host:) U9Nxdfg0e u0String host = s.substring(Host:.length() + 1);$jMN7_(j VOU0System.out.println(host- + host);jg%N:pR3d0request.setHost(host);$.?pL.X_0:GC/J_nZ5mU20 else if (s.startsWith(Accept-Language:) 2R.lAFS0b0String language = s.substring(Accept-Language:.length() + 1);IT初始化*bc:c.K?System.out.println(language- + language);on

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论