<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 |
---|