1 import java.io.ByteArrayOutputStream;
2 import java.io.UnsupportedEncodingException;
3 import java.util.ArrayList;
4 import java.util.Iterator;
5 import java.util.List;
6 import java.util.Map;
7 import java.util.Map.Entry;
8 import java.util.Set;
9
10 import org.apache.http.HttpEntity;
11 import org.apache.http.HttpResponse;
12 import org.apache.http.client.HttpClient;
13 import org.apache.http.client.entity.UrlEncodedFormEntity;
14 import org.apache.http.client.methods.HttpGet;
15 import org.apache.http.client.methods.HttpPost;
16 import org.apache.http.client.methods.HttpPut;
17 import org.apache.http.entity.BufferedHttpEntity;
18 import org.apache.http.impl.client.DefaultHttpClient;
19 import org.apache.http.message.BasicNameValuePair;
20
21 public class HttpUtil {
22
23 /**
24 * 以Post方法访问
25 * @param url 请求地址
26 * @param paramsMap 携带的参数
27 * @return String 返回结果
28 * @throws Exception
29 */
30 @SuppressWarnings("deprecation")
31 public static String postMethod(String url, Map<String, Object> paramsMap){
32 String result = "SUCCESS";
33 try {
34 byte[] dataByte = null;
35 HttpClient httpClient = new DefaultHttpClient();
36 HttpPost httpPost = new HttpPost(url);
37 UrlEncodedFormEntity encodedFormEntity = new UrlEncodedFormEntity(setHttpParams(paramsMap), "UTF-8");
38 httpPost.setEntity(encodedFormEntity);
39 HttpResponse httpResponse = httpClient.execute(httpPost);
40 if (!checkNetwork(httpResponse)) {
41 result = "LINK FAILURE!";
42 return result;
43 }
44 HttpEntity httpEntity = httpResponse.getEntity();
45 if (httpEntity != null) {
46 byte[] responseBytes = getData(httpEntity);
47 dataByte = responseBytes;
48 httpPost.abort();
49 }
50 result = bytesToString(dataByte);
51 } catch (Exception e) {
52 result = "FAILURE";
53 e.printStackTrace();
54 }
55 return result;
56 }
57
58 /**
59 * 以Get方法访问
60 * @param url 请求地址
61 */
62 public static String GETMethod(String url,Map<String, Object> paramsMap){
63 String result = "SUCCESS";
64 try{
65 byte[] dataByte = null;
66 HttpClient httpClient = new DefaultHttpClient();
67 //为GET请求链接构造参数
68 url = formatGetParameter(url,paramsMap);
69 HttpGet httpGet = new HttpGet(url);
70 HttpResponse httpResponse = httpClient.execute(httpGet);
71 if (!checkNetwork(httpResponse)) {
72 result = "LINK FAILURE!";
73 return result;
74 }
75 HttpEntity httpEntity = httpResponse.getEntity();
76 if (httpEntity != null) {
77 byte[] responseBytes = getData(httpEntity);
78 dataByte = responseBytes;
79 httpGet.abort();
80 }
81 result = bytesToString(dataByte);
82 }catch(Exception e){
83 result = "LINK FAILURE!";
84 e.printStackTrace();
85 }
86 return result;
87 }
88
89 /**
90 * 以Put方法访问
91 * @param url 请求地址
92 */
93 public static String PUTMethod(String url,Map<String, Object> paramsMap){
94 String result = "SUCCESS";
95 try {
96 byte[] dataByte = null;
97 HttpClient httpClient = new DefaultHttpClient();
98 HttpPut httpPut = new HttpPut(url);
99 UrlEncodedFormEntity encodedFormEntity = new UrlEncodedFormEntity(setHttpParams(paramsMap), "UTF-8");
100 httpPut.setEntity(encodedFormEntity);
101 HttpResponse httpResponse = httpClient.execute(httpPut);
102 if (!checkNetwork(httpResponse)) {
103 result = "LINK FAILURE!";
104 return result;
105 }
106 // 获取返回的数据
107 HttpEntity httpEntity = httpResponse.getEntity();
108 if (httpEntity != null) {
109 byte[] responseBytes = getData(httpEntity);
110 dataByte = responseBytes;
111 httpPut.abort();
112 }
113 result = bytesToString(dataByte);
114 } catch (Exception e) {
115 result = "LINK FAILURE!";
116 e.printStackTrace();
117 }
118 return result;
119 }
120
121 /**
122 * 构造GET请求地址的参数拼接
123 * @param url
124 * @param paramsMap
125 * @return String
126 */
127 private static String formatGetParameter(String url, Map<String, Object> paramsMap) {
128 if (paramsMap != null && !paramsMap.isEmpty()) {
129 if (url != null && url.length() > 0) {
130 if (!url.endsWith("?")) {
131 url = url + "?";
132 }
133 Set<Entry<String, Object>> entrySet = paramsMap.entrySet();
134 Iterator<Entry<String, Object>> iterator = entrySet.iterator();
135 while (iterator.hasNext()) {
136 Entry<String, Object> entry = iterator.next();
137 if (entry != null) {
138 String key = entry.getKey();
139 String value = (String) entry.getValue();
140 url = url + key + "=" + value;
141 if (iterator.hasNext()) {
142 url = url + "&";
143 }
144 }
145 }
146 }
147 }
148 return url;
149 }
150
151 /**
152 * 获取数据
153 * @param httpEntity
154 */
155 private static byte[] getData(HttpEntity httpEntity) throws Exception{
156 BufferedHttpEntity bufferedHttpEntity = new BufferedHttpEntity(httpEntity);
157 ByteArrayOutputStream byteArrayOutputStream = new ByteArrayOutputStream();
158 bufferedHttpEntity.writeTo(byteArrayOutputStream);
159 byte[] responseBytes = byteArrayOutputStream.toByteArray();
160 return responseBytes;
161 }
162
163 /**
164 * 设置HttpPost请求参数
165 * @param paramsMap
166 * @return BasicHttpParams
167 */
168 private static List<BasicNameValuePair> setHttpParams(Map<String, Object> paramsMap){
169 List<BasicNameValuePair> nameValuePairList = new ArrayList<BasicNameValuePair>();
170 if (paramsMap!=null && !paramsMap.isEmpty()) {
171 Set<Entry<String, Object>> set = paramsMap.entrySet();
172 Iterator<Entry<String, Object>> iterator = set.iterator();
173 while(iterator.hasNext()){
174 Entry<String, Object> entry = iterator.next();
175 BasicNameValuePair basicNameValuePair = new BasicNameValuePair(entry.getKey(), entry.getValue().toString());
176 nameValuePairList.add(basicNameValuePair);
177 }
178 }
179 return nameValuePairList;
180 }
181
182 /**
183 * 将字节数组转换成字符串
184 * @param bytes
185 */
186 private static String bytesToString(byte[] bytes) throws UnsupportedEncodingException{
187 if (bytes!=null) {
188 String returnStr = new String(bytes,"utf-8");
189 return returnStr;
190 }
191 return null;
192 }
193
194 /**
195 * 判断网络连接是否成功
196 */
197 public static boolean checkNetwork(HttpResponse httpResponse){
198 if (httpResponse.getStatusLine().getStatusCode() == 200) {
199 return true;
200 }
201 return false;
202 }
203 }