import java.io.BufferedReader; import java.io.InputStreamReader; import java.io.PrintStream; import java.io.UnsupportedEncodingException; import java.net.HttpURLConnection; import java.net.URL; import java.text.SimpleDateFormat; import java.util.Calendar; import java.util.Date; import java.util.Map; import org.apache.log4j.Logger; public class RequestDoPostUtil { private static Logger log = Logger.getLogger(RequestDoPostUtil.class); public static String doPost(String url, Map<String, Object> parameters) throws Exception { // 編碼請求參數 String params = paramsConvert(parameters); URL restURL = new URL(url); log.info("鏈接:"+url); log.info("參數:"+parameters.toString()); int t= 0;//調用接口出錯次數 while(t<3) { try { /* * 此處的urlConnection對象實際上是根據URL的請求協議(此處是http)生成的URLConnection類 * 的子類HttpURLConnection */ HttpURLConnection conn = (HttpURLConnection) restURL.openConnection(); // conn.setConnectTimeout(5000); // conn.setReadTimeout(5000); // 請求方式 conn.setRequestMethod("POST"); // 設置是否從httpUrlConnection讀入,默認情況下是true; httpUrlConnection.setDoInput(true); conn.setDoOutput(true); // allowUserInteraction 如果為 true,則在允許用戶交互(例如彈出一個驗證對話框)的上下文中對此 URL 進行檢查。 conn.setAllowUserInteraction(false); PrintStream ps = new PrintStream(conn.getOutputStream()); ps.print(params); ps.close(); BufferedReader bReader = new BufferedReader(new InputStreamReader(conn.getInputStream(), "UTF-8")); String line, resultStr = ""; while (null != (line = bReader.readLine())) { resultStr += line; } System.out.println(resultStr); bReader.close(); return resultStr; } catch (Exception e) { t++; log.warn("=======>出錯次數(requset error ):" + t); e.printStackTrace(); } } throw new Exception("網絡異常,請稍后再試"); } /** * 參數類型轉換 * * @param parameters * @return * @throws UnsupportedEncodingException */ public static String paramsConvert(Map<String, Object> parameters) throws UnsupportedEncodingException { StringBuffer sb = new StringBuffer();// 處理請求參數 // 編碼請求參數 for (String name : parameters.keySet()) { Object object = parameters.get(name); log.info("類型:"+object.getClass()); if(object instanceof Integer) { sb.append(name).append("=").append(java.net.URLEncoder.encode((String)object, "UTF-8")) .append("&"); }else if(object instanceof Date) { Calendar cal = Calendar.getInstance(); cal.setTime((Date)object); SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); sb.append(name).append("=").append(java.net.URLEncoder.encode(sdf.format(cal.getTime()), "UTF-8")) .append("&"); }else{ if(object.getClass().isArray()) {//判斷是否是字符串數組 String[] values = (String[])object; for(String va : values) { sb.append(name).append("=").append(java.net.URLEncoder.encode((String) va, "UTF-8")) .append("&"); } }else { sb.append(name).append("=").append(java.net.URLEncoder.encode((String) parameters.get(name), "UTF-8")) .append("&"); } } } return sb.toString().substring(0, sb.toString().length()-1); } public static void main(String[] args) { int s = 0; Object o = (Object)s; log.info(o.getClass()); Integer a = 0; log.info(a.getClass()); Date b = new Date(); log.info(b.getClass()); String c = ""; log.info(c.getClass()); String [] d = new String[2]; log.info(d.getClass()); } }
調用
String doPost = RequestDoPostUtil.doPost(sysParam.getParamValue(), param); JSONObject ret = JSONObject.fromObject(doPost); String code = ret.getString("code"); if("0".equals(code)) { map2= (List<Map<String, Object>>)ret.getJSONObject("data").get("list"); }