<AndroidManifest.xml>
<?xml version="1.0" encoding="utf-8"?> <manifest xmlns:android="http://schemas.android.com/apk/res/android" package="com.example.database_connection_activity"> <application android:allowBackup="true" android:icon="@mipmap/ic_launcher" android:label="@string/app_name" android:roundIcon="@mipmap/ic_launcher_round" android:supportsRtl="true" android:usesCleartextTraffic="true" android:theme="@style/Theme.DataBase_Connection_Activity"> <activity android:name=".MainActivity"> <intent-filter> <action android:name="android.intent.action.MAIN" /> <category android:name="android.intent.category.LAUNCHER" /> </intent-filter> </activity> </application> <uses-permission android:name="android.permission.INTERNET"/> <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"/> </manifest>
public class RegisterActivity extends AsyncTask<Map<String, String>, Integer, String> { //public static String ip = "10.0.2.2"; // 자신의 IP주소를 쓰시면 됩니다. @Override protected String doInBackground(Map<String, String>... maps) { // Http 요청 준비 작업 HttpClient.Builder http = new HttpClient.Builder ("POST", "http://" + ip + ":8080/count"); //포트번호,서블릿주소 // Parameter 를 전송한다. //http.addAllParameters(maps[0]); //Http 요청 전송 HttpClient post = http.create(); post.request(); // 응답 상태코드 가져오기 int statusCode = post.getHttpStatusCode(); // 응답 본문 가져오기 String body = post.getBody(); Type type = new TypeToken<ArrayList<Vision>>(){}.getType(); Gson gson = new Gson(); ArrayList<Vision> data = gson.fromJson(body, type); System.out.println("data : "+data.get(0).getTtt()); System.out.println("Body : "+body); for(int index=0; index<data.size(); index++){ System.out.println("VO COUNT : "+data.get(index).getCount()); System.out.println("VO TTT : "+data.get(index).getTtt()); } return body; } @Override protected void onPostExecute(String s) { //서블릿으로부터 값을 받을 함수 System.out.println("???????" + s); Type type = new TypeToken<ArrayList<Vision>>(){}.getType(); Gson gson = new Gson(); //Vision data = gson.fromJson(s, Vision.class); ArrayList<Vision> data = gson.fromJson(s, type);//Collection // System.out.println("번호 : "+data.size()); } }
public class HttpClient { private static final String WWW_FORM = "application/x-www-form-urlencoded"; private int httpStatusCode; private String body; public int getHttpStatusCode() { return httpStatusCode; } public String getBody() { return body; } private Builder builder; private void setBuilder(Builder builder) { this.builder = builder; } public void request() { HttpURLConnection conn = getConnection(); setHeader(conn); setBody(conn); httpStatusCode = getStatusCode(conn); body = readStream(conn); conn.disconnect(); } private HttpURLConnection getConnection() { try { URL url = new URL(builder.getUrl()); return (HttpURLConnection) url.openConnection(); } catch (MalformedURLException e) { e.printStackTrace(); } catch (IOException e) { e.printStackTrace(); } return null; } private void setHeader(HttpURLConnection connection) { setContentType(connection); setRequestMethod(connection); connection.setConnectTimeout(5000); connection.setDoOutput(true); connection.setDoInput(true); } private void setContentType(HttpURLConnection connection) { connection.setRequestProperty("Content-Type", WWW_FORM); } private void setRequestMethod(HttpURLConnection connection) { try { connection.setRequestMethod(builder.getMethod()); } catch (ProtocolException e) { e.printStackTrace(); } } private void setBody(HttpURLConnection connection) { String parameter = builder.getParameters(); if ( parameter != null && parameter.length() > 0 ) { OutputStream outputStream = null; try { outputStream = connection.getOutputStream(); outputStream.write(parameter.getBytes("UTF-8")); outputStream.flush(); } catch (IOException e) { e.printStackTrace(); } finally { try { if ( outputStream != null ) outputStream.close(); } catch (IOException e) { e.printStackTrace(); } } } } private int getStatusCode(HttpURLConnection connection) { try { return connection.getResponseCode(); } catch (IOException e) { e.printStackTrace(); } return -10; } private String readStream(HttpURLConnection connection) { String result = ""; BufferedReader reader = null; try { reader = new BufferedReader(new InputStreamReader(connection.getInputStream())); String line = null; while ( (line = reader.readLine()) != null ) { result += line; } } catch (IOException e) { e.printStackTrace(); } finally { try { if(reader != null) reader.close(); } catch (IOException e) {} } return result; } public static class Builder { private Map<String, String> parameters; private String method; private String url; public String getMethod() { return method; } public String getUrl() { return url; } public Builder(String method, String url) { if(method == null) { method = "GET"; } this.method = method; this.url = url; this.parameters = new HashMap<String, String>(); } public void addOrReplace(String key, String value) { this.parameters.put(key, value); } public void addAllParameters(Map<String, String> param) { this.parameters.putAll(param); } public String getParameters() { return generateParameters(); } public String getParameter(String key) { return this.parameters.get(key); } private String generateParameters() { StringBuffer parameters = new StringBuffer(); Iterator<String> keys = getKeys(); String key = ""; while ( keys.hasNext() ) { key = keys.next(); parameters.append(String.format("%s=%s", key, this.parameters.get(key))); parameters.append("&"); } String params = parameters.toString(); if ( params.length() > 0 ) { params = params.substring( 0, params.length() - 1 ); } return params; } private Iterator<String> getKeys() { return this.parameters.keySet().iterator(); } public HttpClient create() { HttpClient client = new HttpClient(); client.setBuilder(this); return client; } } }
'낙서장 > Android' 카테고리의 다른 글
Android 알림 받는 기능 (0) | 2022.03.21 |
---|