Http Post請求提交json格式數據工具類,解決請求參數中文亂碼問題

  1. import java.io.BufferedReader;  
  2. import java.io.DataOutputStream;  
  3. import java.io.IOException;  
  4. import java.io.InputStream;  
  5. import java.io.InputStreamReader;  
  6. import java.net.HttpURLConnection;  
  7. import java.net.URL;  
  8.   
  9. import org.apache.log4j.Logger;  
  10.   
  11. import com.google.gson.Gson;  
  12.   
  13. public class HttpUtil {  
  14.     private static final Logger LOGGER = Logger.getLogger(HttpUtil.class);  
  15.   
  16.     public static final String DEF_CHATSET = "UTF-8";  
  17.     public static final int DEF_CONN_TIMEOUT = 30000;  
  18.     public static final int DEF_READ_TIMEOUT = 30000;  
  19.     public static String userAgent = "Mozilla/5.0 (Windows NT 6.1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/29.0.1547.66 Safari/537.36";  
  20.   
  21.     public static String sendRequest(final String url,  
  22.             final QuestionBean params, final String requestMethod) {  
  23.         final String result = net(url, params, requestMethod);  
  24.         LOGGER.info(result);  
  25.         return result;  
  26.     }  
  27.   
  28.     /** 
  29.      * 
  30.      * @param strUrl 
  31.      *            請求地址 
  32.      * @param params 
  33.      *            請求參數 
  34.      * @param method 
  35.      *            請求方法 
  36.      * @return 網絡請求字符串 
  37.      * 
  38.      */  
  39.     public static String net(String strUrl, final QuestionBean params,  
  40.             final String method) {  
  41.         HttpURLConnection conn = null;  
  42.         BufferedReader reader = null;  
  43.         String rs = null;  
  44.         try {  
  45.             final StringBuffer sb = new StringBuffer();  
  46.             final URL url = new URL(strUrl);  
  47.             conn = (HttpURLConnection) url.openConnection();  
  48.             if (method == null || method.equals("GET")) {  
  49.                 conn.setRequestMethod("GET");  
  50.             } else {  
  51.                 conn.setRequestMethod("POST");  
  52.                 conn.setDoOutput(true);  
  53.             }  
  54.             conn.setRequestProperty("User-agent", userAgent);  
  55.   
  56.             // 設置文件類型:  
  57.             conn.setRequestProperty("Content-Type",  
  58.                     "application/json;charset=UTF-8");  
  59.             // 設置接收類型否則返回415錯誤  
  60.             // conn.setRequestProperty("accept","*/*")此處爲暴力方法設置接受所有類型,以此來防範返回415;  
  61.             conn.setRequestProperty("accept""application/json");  
  62.             conn.setUseCaches(false);  
  63.             conn.setConnectTimeout(DEF_CONN_TIMEOUT);  
  64.             conn.setReadTimeout(DEF_READ_TIMEOUT);  
  65.             conn.setInstanceFollowRedirects(false);  
  66.             conn.connect();  
  67.             if (params != null && "POST".equals(method)) {  
  68.                 DataOutputStream out = new DataOutputStream(  
  69.                         conn.getOutputStream());  
  70.                 out.write(urlencodeToJson(params).getBytes());  
  71.             }  
  72.             final InputStream is = conn.getInputStream();  
  73.             reader = new BufferedReader(new InputStreamReader(is, DEF_CHATSET));  
  74.             String strRead = null;  
  75.             while ((strRead = reader.readLine()) != null) {  
  76.                 sb.append(strRead);  
  77.             }  
  78.             rs = sb.toString();  
  79.         } catch (final IOException e) {  
  80.             LOGGER.error(e);  
  81.         } finally {  
  82.             if (reader != null) {  
  83.                 try {  
  84.                     reader.close();  
  85.                 } catch (final IOException e) {  
  86.                     LOGGER.error(e);  
  87.                 }  
  88.             }  
  89.             if (conn != null) {  
  90.                 conn.disconnect();  
  91.             }  
  92.         }  
  93.         return rs;  
  94.     }  
  95.   
  96.     // 將對象轉爲json請求參數型  
  97.     public static String urlencodeToJson(final QuestionBean data) {  
  98.         return new Gson().toJson(data);  
  99.     }  
  100.   
  101. }  
發佈了42 篇原創文章 · 獲贊 8 · 訪問量 6萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章