1 public class SimulateLogin {
2 private HttpClient httpClient;
3
4 public SimulateLogin(String loginURL, String userName, String password, String iplogin) {
5 this.httpClient = new DefaultHttpClient();
6 // 构造一个POST请求
7 HttpPost httpPost = new HttpPost(loginURL);
8 httpPost
9 .setHeader("User-Agent",
10 "Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US) AppleWebKit/534.3 (KHTML, like Gecko) Chrome/6.0.472.63 Safari/534.3"); //如果对方系统没做特殊限制,可不用
11 // 将要POST的数据封包
12 List<NameValuePair> params = new ArrayList<NameValuePair>();
13 params.add(new BasicNameValuePair("username", userName));
14 params.add(new BasicNameValuePair("password", password));
15 // params.add(new BasicNameValuePair("iplogin", iplogin));
16 // 封包添加到Post请求
17 try {
18 httpPost.setEntity(new UrlEncodedFormEntity(params, HTTP.UTF_8));
19 } catch (UnsupportedEncodingException e1) {
20 e1.printStackTrace();
21 }
22 HttpResponse response = postMethod(httpPost);
23 }
24
25 /**
26 * 嗅探指定的GET页面
27 * @param url
28 * @return String txt
29 */
30 public String notifyGetPage(String url) {
31 HttpGet get = new HttpGet(url);
32 ResponseHandler<String> responseHandler = new BasicResponseHandler();
33 String txt = null;
34 try {
35 txt = httpClient.execute(get, responseHandler);
36 } catch (ClientProtocolException e) {
37 e.printStackTrace();
38 } catch (IOException e) {
39 e.printStackTrace();
40 } finally {
41 get.abort();
42 }
43 return txt;
44 }
45
46 /**
47 * 嗅探指定的POST页面,,因为post方法要封装参数,因此在函数外部封装好传参
48 * @param post
49 * @return String txt
50 */
51 public String notifyPostPage(HttpPost post) {
52 ResponseHandler<String> responseHandler = new BasicResponseHandler();
53 String txt = null;
54 try {
55 txt = httpClient.execute(post, responseHandler);
56 } catch (ClientProtocolException e) {
57 e.printStackTrace();
58 } catch (IOException e) {
59 e.printStackTrace();
60 } finally {
61 post.abort();
62 }
63 return txt;
64 }
65
66 // 用post方法向服务器请求 并获得响应,因为post方法要封装参数,因此在函数外部封装好传参
67 public HttpResponse postMethod(HttpPost post) {
68 HttpResponse resp = null;
69 try {
70 resp = httpClient.execute(post);
71 } catch (ClientProtocolException e) {
72 e.printStackTrace();
73 } catch (IOException e) {
74 e.printStackTrace();
75 } finally {
76 post.abort();
77 }
78 return resp;
79 }
80
81 // 用get方法向服务器请求 并获得响应
82 public HttpResponse getMethod(String url) {
83 HttpGet get = new HttpGet(url);
84 HttpResponse resp = null;
85 try {
86 resp = httpClient.execute(get);
87 } catch (ClientProtocolException e) {
88 e.printStackTrace();
89 } catch (IOException e) {
90 e.printStackTrace();
91 } finally {
92 get.abort();
93 }
94 return resp;
95 }
96
97 /**
98 *输出数据
99 */
100 public void outputData(HttpServletResponse resp,String url) throws IOException {
101 HttpGet httpget = new HttpGet(url);
102 HttpResponse response = this.httpClient.execute(httpget);
103 HttpEntity entity = response.getEntity();
104 ServletOutputStream output = resp.getOutputStream();
105 if (entity != null) {
106 InputStream instream = entity.getContent();
107 int len;
108 while ((len = instream.read()) != -1) {
109 output.write(len);
110 }
111 output.close();
112 instream.close();
113 }
114 this.httpClient.getConnectionManager().shutdown();
115
116 }
117
118 //第一个参数,网络连接;第二个参数,保存到本地文件的地址
119 public void getFile(HttpServletResponse resp,String url,boolean ispdf) {
120 HttpGet get = new HttpGet(url);
121 try {
122 ResponseHandler<byte[]> handler = new ResponseHandler<byte[]>() {
123 public byte[] handleResponse(HttpResponse response)
124 throws ClientProtocolException, IOException {
125 HttpEntity entity = response.getEntity();
126 if (entity != null) {
127 return EntityUtils.toByteArray(entity);
128 } else {
129 return null;
130 }
131 }
132 };
133
134 byte[] charts = this.httpClient.execute(get, handler);
135 Header[] headers= getMethod(url).getAllHeaders();
136 for(Header h:headers){
137 if(h.getValue().indexOf("kdh")!=-1&&ispdf){
138 resp.setHeader(h.getName(),h.getValue().replaceAll("kdh","pdf"));
139 }else{
140 resp.setHeader(h.getName(),h.getValue());
141 }
142 }
143 ServletOutputStream out = resp.getOutputStream();
144 out.write(charts);
145 out.close();
146 } catch (Exception e) {
147 e.printStackTrace();
148 } finally {
149 this.httpClient.getConnectionManager().shutdown();
150 }
151 }
152
153 }
1 simulateLogin.getFile(response,link,ispdf);