a我考网

 找回密码
 立即注册

QQ登录

只需一步,快速开始

扫一扫,访问微社区

查看: 137|回复: 0

[专业语言] JAVA实现httpClient

[复制链接]
发表于 2012-8-4 12:44:44 | 显示全部楼层 |阅读模式
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- [
  }
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

Archiver|手机版|小黑屋|Woexam.Com ( 湘ICP备18023104号 )

GMT+8, 2024-4-30 00:19 , Processed in 0.293040 second(s), 21 queries .

Powered by Discuz! X3.4 Licensed

© 2001-2017 Comsenz Inc.

快速回复 返回顶部 返回列表