Android - 使用HTTP通訊的範例
由於下列範例是網路上的資源,已經忘記出處,以下作為分享使用。
放在Android端,連線都透過此class執行
public class HTTPconnect { public String sendPostRequest(String requestURL, HashMap<String, String> postDataParams) { URL url; String response = ""; try { url = new URL(requestURL); HttpURLConnection conn = (HttpURLConnection) url.openConnection();/**設定connection物件**/ /**HttpURLConnection是基於HTTP協定的,其底層通過socket通信實現。如果不設置超時(timeout),在網路異常的情況下,可能會導致程式卡住而不繼續往下執行。**/ conn.setReadTimeout(15000);/**單位:毫秒**/ conn.setConnectTimeout(15000); conn.setRequestMethod("POST");/**選用傳遞方法 >> POST (這樣表單資料傳送過程中不會被明文顯示)**/ conn.setDoInput(true); conn.setDoOutput(true); OutputStream os = conn.getOutputStream(); BufferedWriter writer = new BufferedWriter(new OutputStreamWriter(os, "UTF-8")); writer.write(getPostDataString(postDataParams)); writer.flush(); writer.close(); os.close(); int responseCode=conn.getResponseCode(); if (responseCode == HttpsURLConnection.HTTP_OK) { BufferedReader br=new BufferedReader(new InputStreamReader(conn.getInputStream())); response = br.readLine(); } else { response="Error Create"; } } catch (Exception e) { e.printStackTrace(); } return response; } private String getPostDataString(HashMap<String, String> params) throws UnsupportedEncodingException { StringBuilder result = new StringBuilder(); boolean first = true; for(Map.Entry<String, String> entry : params.entrySet()) { if (first) first = false; else result.append("&"); result.append(URLEncoder.encode(entry.getKey(), "UTF-8")); result.append("="); result.append(URLEncoder.encode(entry.getValue(), "UTF-8")); } return result.toString(); } }
留言
張貼留言