java 封装httpclient 的get 和post 请求
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 }