From bf235694ebd9ee064adbc62aaeb79b061fff7af1 Mon Sep 17 00:00:00 2001 From: Ziver Koc Date: Fri, 11 Dec 2015 14:37:25 +0100 Subject: [PATCH] Added URLDecoder class (Unicode not supported) --- Zutil.jar | Bin 1184460 -> 1185325 bytes src/zutil/net/http/HttpHeaderParser.java | 5 +++- src/zutil/parser/URLDecoder.java | 36 +++++++++++++++++++++++ test/zutil/test/URLDecoderTest.java | 35 ++++++++++++++++++++++ 4 files changed, 75 insertions(+), 1 deletion(-) create mode 100755 src/zutil/parser/URLDecoder.java create mode 100755 test/zutil/test/URLDecoderTest.java diff --git a/Zutil.jar b/Zutil.jar index 7903216ef3aff42f30554974856dd049f1dbd710..3c116df27545c3890669394249cc1b63679ca31c 100755 GIT binary patch delta 22845 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 delta 22175 zcmZV`2V9Na`?l9z?`>)?NoYt$A<1f>l95$WD$%g_m0cQ0j*19{RN5~^(~Oo?muw81

R=cMKnJmuMPb4(Mo&oN{)&P8-GpAx2Or7>d50BGj{6hbG8k7L@4G z;TE#liKaE;7>R;phg+yg;4gtZ5~%Yup_tulc~1ln`vbN}0C2;^9WjGV<>6y0MesYE=2_s z@wB30TFCaDTm=P+Hl3zS0@(n1czm~7$sNX|@zH2?X*4Qh>imjycm! zT1-DZ3}yN;RnddVOah&-V&0-aFb9>fqXblN@UYc<^@cO z1aXaM6h06|w?mkFu(JWKOnUBNrem7XTqk96_yMK^&4HSPWMn9Fy$r^svKFZp%^W9- zBY*yB<}lm8Lo zOKfWrhJK@Y<7n70l+{Vo#CRKrvyAZ?i6|Ci@p#rQOqjHp#EKNfCMs?Qk>6Oe{?5Ua z1)!_?6c)XZVcSfZ!fGaP>ZKMyL}8FqTv$%DU#L}y1lS`i2#yl?(jc?lSap(rm=J3M zeN6tY{eq>HyzjxvlcuMp<;O}gpQet=Dh@c?xNfBD38r1ZiJQzE$LS*t zU5;G3^{j00v&QfVk?$4O?q-{Mv|Q~eu+ofDU3zsrJ1Qsjq=N0+Wn`d;V(3z{KGPhf zz83?J@&`Ap8~yd=z<_w0`yq2#^Kp_t;|jXZ_+=sgL#*8{PA@Luy+LL!CA}4#~No;3aD}qg<*aI$aIVjqxcTpVsE;sk5MN#v-2s zzSCvK9dg{A7g*7I%hkYNVrUxQ^*%46*5=~AhJ5F$Rh8@Nvt9?)hL$sQw=DCtuC754hLM#>6a$)7-pa(j>R3)3-)zo-<7?sk`~$(O19ZspA&q zj=GZbYIyXwUDH$Vk4SR}sjIt{rk_`B%1;V?q^fbuzVcNBj{P?417k{g^ z!?#(p{VJZwT{it_ptjTac6afTc`-z#r(LtA?j(81IakQXF_zKx?MqEd6OSY%PEO4) zaPaP$qTtwJWwoI=!b4Niy(QCJ@v(tyWu8k>;XUQ2fkFpl_%FQ{w@3^lH2Wd`YC!5XiZS5bXGkSvg-Kc_l;g& jnh zpC``t>3t`$fY-IuQ{iEc?UzleWn+5pu#E!MA66IkojSmlQ{S3r^|rV%;R)noS?=Y_ z{CNdqV@sdb)vT`Ye;%k%5OUQ)RbrR=xyF*Pvab^cDkDy@8xz&uymBn{s8_hMB-}Yf zq;yfM-;oVJzRZo@cmL$gMIrsYhK0iA6)Y4dsG*sJ0hShzsY{B(h<2hhmvCxN|a|=PZ-{= zsJZ)`|C&eQ3v+YjO0<)Gm*1?*nPS{kB&MX`y4z;ovn9lZjEYBEi;GrWs~@jnrxP@D zY||*)D?2oPSv{$6_7L*U^v1KXeRR`ssXnvqQ`0A8W^@kdIAY-)vkK zA=BV9;*OVJ0=K37yQ1^bh-*df_`kjmdOYD@8@OcgdQyi=gDLu&OO||^*b_Lg;n3#= zT`opLKL(C!Ig@$W#5lj%YSQcX35RV0I|tvquy%5gk}eBVUU*HM!5GD4F#hID*fvvJ zACz*8PJbNo)ozxq2u^=^N4w@8-J!@|68Joix2x6N?6K(W?vUq8I`rdnH(wbKNidV; zW;b@{aIe_BC*|jCYOa53ANXu;TdsWHu8U#g+{O@5XZsXh=h#^kSy!&S<}>=GuAf`( zy2qj?rmc7w?e`#`Z7FrJ{!5_N(W&w4;I=^3WY3W)|YBR6cw} z2#;$pH)D#t^OSJcd-7x0Qx7@CN=^%~u)XB!SZ8ZEL^fQdB9C&N8ly^cwE0xoSnimqTg=1`e@jS0}%`BWioe;#Z08bOm1Qq47$b z7pwI7$IOQHJj&iU`m$!}(Q7_U7STVZ8RoPsvfb*ohL^B5DcdyC^H!G1xoru)<8`mz zi1xBe$uQocQZ{u~TK?;eTUXjQgm@Oow=@-sb#o$j6m!R%JS$cCtE`vnDp!@bjDfw>KyU^zbU3^BV4UY|iW= z#=rJY8gl9_Q>M4PuX)+hrq1+E$<0Gq^}%~JJvV=!+-REdvv{rh_B_sBe}1)=rSBby zsb5-_-<>(TGNx9p{L&D=ww5;01IwB}&N_W3`)ZB+nKk=2@q;=G&{IbK&Yn`6j_Z4s znmQ9!)+O#;%dgsW)jr76{RxUZ(WQ5+FM3f#Qc&~8Lyp_l4){w26wNfw{c*GSuD8sj z&wF#frde&U_xRC$WKV71kA-*KWXeUm!S9ZD*y)(CH&Cz^7C=IXO8GFLYx+z|feN{IwjKA!*ldiMNt(U)U+zTFl zdtF~gfcj+52SvK+jpvOvJ2@N`n;!ip-D84h%8vKjr&%knd-y`zQKfCion7%0^HO77 z4rkkYzwf&-x@5MTL6lFdxmon6w^x%of+r}=V>PZUm#=*=H1Mwa%(L-Mw$mSeKX7zS za+i!xd$?K5Bh}%Tw7SdqTkbEeH<>ZUWMSl^x;m?pP=`$;Y+qc!wQ*-jB zArbpe%)eUOH@fqFnA4A``}TW9Pn2^G__nBGas3;eJ{8AlFT*NoAImm~4No3_eBPsd z!EMh^-d3V~_avCz4Rp!4omxjwfzwKXiMcN!{RzE)(Jg`tV#Nx5igK01K zI9C)zb$(rO=loQ0W;jtCC(2r%Cx1wzoj-MCTuj=)xDjrlu`5~>+~u3+n#BgQl+70A zN8cGpn71&rPJM-|$gr92t0T5OzqD(Mi}j>5jTPhCy>(b#vo@a#nwFdR;+Wg^+n*lT zC2ot_c-%d8xmD<@(wuJ#7P@8|-#1OUt$BI=6$y*n=W8ugE#vyOjC6CEHEoLV)1c28 zG4p2gM_d|jX?)3d$AqC_y3ax?dc)xMRc&HGa8)#(^W>GIG_jL$~?OZPi)c z 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 mYr>AAR7D cookies; /** - * Parses the HTTP header information from the stream + * Parses the HTTP header information from a stream * * @param in is the stream * @throws IOException @@ -147,6 +149,7 @@ public class HttpHeaderParser { */ public static void parseURLParameters(String attributes, HashMap map){ String[] tmp; + attributes = URLDecoder.decode(attributes); // get the variables String[] data = andPattern.split( attributes ); for(String element : data){ diff --git a/src/zutil/parser/URLDecoder.java b/src/zutil/parser/URLDecoder.java new file mode 100755 index 0000000..412a00c --- /dev/null +++ b/src/zutil/parser/URLDecoder.java @@ -0,0 +1,36 @@ +package zutil.parser; + +/** + * This utility class will decode Strings encoded with % sign's to a normal String + * + * Created by Ziver on 2015-12-11. + */ +public class URLDecoder { + + public static String decode(String url){ + if(url == null) + return null; + StringBuilder out = new StringBuilder(); + for (int i=0; i