package net.xfok.http; import java.util.HashMap; import java.util.Iterator; import java.util.Map;
6 C$ ]0 h; }: e8 @& k+ u5 K import org.apache.commons.httpclient.Header; import org.apache.commons.httpclient.HttpClient; import org.apache.commons.httpclient.HttpStatus; import org.apache.commons.httpclient.NameValuePair; import org.apache.commons.httpclient.methods.PostMethod;
; W9 [: k3 C2 p2 I/ E /**
7 v4 h! X7 _3 B2 F! X */
1 I+ i$ x- J. y$ \ public class MyClient {
0 A) i( k$ ^9 `! U3 s# M /**# a" T+ g, s# K2 g7 s. c
*的到Http请求结果. N/ D5 ^2 }3 t- Z, \; V
* @param url请求地址
9 i2 ]+ `; _) Y. n1 B3 E" d# A * @param parms请求参数) i. S, {+ `, i9 e
* @return$ R S1 h- r* i$ w
*/
# o' p$ ]* n" k {% h public byte[] getBody(String url,Map parms){
4 b# G+ K/ V$ T; O% C byte[] body=null;0 w7 }& U4 f4 \! j7 d
//构造HttpClient的实例7 G3 V4 y S9 c1 V) t$ Y, }
HttpClient httpClient = new HttpClient();8 z/ f. t, K( d1 a4 Y
//创建GET方法的实例
) Z) ~5 D# n( @$ s m3 _ PostMethod postMethod = new PostMethod(url);
" P% A8 K9 L' p. g) |" t4 u: [ //填入各个表单域的值
/ c9 `% U/ {5 T x NameValuePair[] data = new NameValuePair[parms.keySet().size()]; Iterator it = parms.entrySet().iterator();" U3 N: p- y9 @; g* x7 s( b
int i=0;; w6 M7 P$ l# u% Y7 j$ u
while (it.hasNext()) { Map.Entry entry = (Map.Entry) it.next(); Object key = entry.getKey(); Object value = entry.getValue(); data=new NameValuePair(key.toString(),value.toString());/ H! h- b! E! e1 h: P
i++;- o, T$ j2 B" S- }' n" m
}
( W) d& U* X/ m n( s' w //将表单的值放入postMethod中
8 ~0 w8 o1 E: p6 q0 ~$ d) f postMethod.setRequestBody(data);
: f+ l# ?$ o' u5 k Q; k try {5 N9 e [8 k) b
//执行postMethod9 S7 h6 _" Y9 i+ e- n& N9 y) k
int statusCode = httpClient.executeMethod(postMethod); // HttpClient对于要求接受后继服务的请求,象POST和PUT等不能自动处理转发1 W: G5 U! l& p$ C Y
// 301或者302, Z) q% X U: R) w$ O% `# a
if (statusCode == HttpStatus.SC_MOVED_PERMANENTLY || statusCode == HttpStatus.SC_MOVED_TEMPORARILY) {
) W) Z: j# H q% N* S //从头中取出转向的地址3 `) K& k& P, x" ]
Header locationHeader = postMethod
9 k1 a5 W8 x( |" X .getResponseHeader(“location”);+ j- C3 W2 x# ^- q, y' E! B
String location = null;
* |& |) {: k4 Z9 J" Q if (locationHeader != null) { location = locationHeader.getValue(); System.out .println(“The page was redirected to:” + location);9 `# O/ A' I, y' E/ A3 U P W% e+ k: H
} else {
* n- E/ o M' Q( C$ j System.err.println(“Location field value is null.”);
2 `1 o% m @' o9 d( a; }# ^ }8 l/ ], R6 `: x
}
9 U* F) E2 w+ n& m+ O: _9 @ body = postMethod.getResponseBody();' [3 t) q& _: J* ]( w. d8 ?- `1 |
} catch (Exception e) {
: u: }; G7 ~/ |# | e.printStackTrace();( H9 y9 v) B9 t' @
}) S- R) T1 S/ |, R1 f3 c. M
return body;
- ]3 x$ `8 g7 C- P0 o, H }* a# }; M( r4 q0 L- l# a0 G
public static void main(String[] args) {7 Q4 ]9 R. l. r4 K! Q$ H
String url=“http://www.xfok.net”;8 G# h5 c& h9 W1 Y& P
Map parms=new HashMap();4 Y# U3 ^ ` P% ?3 H
MyClient client=new MyClient();
8 d) |* E" L1 d2 [6 U String result=new String(client.getBody(url, parms)); System.out.println(result);
* b8 r7 }2 m8 O: g' Q }1 t: W* P# g& D- [
} |