Try   HackMD

httpConnectionPost 實作

  • HttpUtils.java

    • 使用一個 Util 類別來處理 http 的連線,接收兩參數:
      • apiUrl 為 server domain,string 格式,Ex:http://192.168.1.100:8000/rest/test
      • jString 為自定義物件的 string 格式,透過 Gson 將物件轉成 string
    • 結果回傳 string 格式,再透過 Gsonstring 轉成自定義物件
public class HttpUtils { private static Logger logger = LoggerFactory.getLogger(FileViewerUtils.class.getName()); public static String httpConnectionPost(String apiUrl, String jString) { HttpURLConnection conn = null; StringBuilder response = new StringBuilder(); try { // server domain URL url = new URL(apiUrl); // 建立要連線的 HttpURLConnection 物件 conn = (HttpURLConnection) url.openConnection(); // 設定 Header 參數 conn.setRequestProperty("Content-Type","application/json; charset=UTF-8"); conn.setRequestProperty("Accept", "application/json"); // 設定連線方法 conn.setRequestMethod("POST"); // 設定雙向溝通 conn.setDoInput(true); // app 端是否接收 server 的回傳結果 conn.setDoOutput(true); // app 端是否傳送資料給 server; if true, connection 會自動將 RequestMethod 設為 POST // 設定等待時間(ms). 等待時間到若 server 無回應則會跳例外 conn.setConnectTimeout(5000); // 其他參數 //conn.setReadTimeout(10000); //conn.setUseCaches(false); DataOutputStream os = new DataOutputStream(conn.getOutputStream()); os.writeBytes(jString); os.flush(); os.close(); /** Get Response */ InputStream is = conn.getInputStream(); BufferedReader reader = new BufferedReader(new InputStreamReader(is)); String line; while ((line = reader.readLine()) != null) { response.append(line); response.append('\r'); } reader.close(); } catch (Exception e) { logger.error(String.valueOf(e)); } finally { if(conn != null) { // 關閉連線 conn.disconnect(); } } return response.toString(); } }

Ref.

[Android]HttpURLConnection 之POST&GET手把手完整教學解析
Android - HttpURLConnection POST Json
Android网络之HttpUrlConnection和Socket关系图解

tags: 實作相關