sitelink1 | |
---|---|
sitelink2 | |
sitelink3 |
- 테스트 성공 코드
- 개발환경 : Android Studio 3.2.1, API27(Android 8.1 Oreo), Eclipse Neon.3 Release (4.6.3), jdk1.8.0_92, Tomcat 9.0
AndroidManifest.xml
<!-- 네트워크 사용에 대한 퍼미션 -->
<uses-permission android:name="android.permission.INTERNET" />
Android
@Override
protected void onCreate(Bundle savedInstanceState) {
HttpUtil data_transfer = new HttpUtil();
JSONObject json_dataTransfer = new JSONObject();
try
{
json_dataTransfer.put("HttpUtil", textView.getText());
String json_string = json_dataTransfer.toString();
String url = "http://[your domain]/[your web app]";
data_transfer.execute(url, json_string);
}
catch (JSONException e)
{
e.printStackTrace();
}
}
public class HttpUtil extends AsyncTask<String, Void, Void> {
String res_json;
@Override
public Void doInBackground(String... params) {
HttpURLConnection conn = null;
try {
conn = (HttpURLConnection) ((new URL(params[0]).openConnection()));
conn.setReadTimeout(10000);
conn.setConnectTimeout(15000);
conn.setRequestMethod("POST");
conn.setDoInput(true); // InputStream으로 서버로 부터 응답을 받겠다는 옵션.
conn.setDoOutput(true); // OutputStream으로 POST 데이터를 넘겨주겠다는 옵션.
conn.setRequestProperty("Accept-Charset", "UTF-8"); // Accept-Charset 설정.
conn.setRequestProperty("Content-Type","application/json;charset=UTF-8");
conn.setRequestProperty("X-Requested-With", "XMLHttpRequest");
//Write
OutputStream os = conn.getOutputStream();
os.write( params[1].getBytes("UTF-8") );
os.flush();
os.close();
//Read
BufferedReader br = null;
if (conn.getResponseCode() == HttpURLConnection.HTTP_OK) {
br = new BufferedReader(new InputStreamReader(conn.getInputStream(), "UTF-8"));
} else {
br = new BufferedReader(new InputStreamReader(conn.getErrorStream(), "UTF-8"));
}
String line;
StringBuffer response = new StringBuffer();
while((line = br.readLine()) != null) {
response.append(line);
response.append('\r');
}
br.close();
this.res_json = response.toString();
//System.out.println(this.res_json);
} catch (Exception e) {
e.printStackTrace();
}
return null;
}
@Override
protected void onPostExecute(Void aVoid) {
super.onPostExecute(aVoid);
MainActivity.serverRes.setText(this.res_json); //serverRes는 TextView로써 MainActivity Class에서 public static으로 선언되었고 onCreate에서 가져온다
}
}
Servlet
public void doGet(HttpServletRequest req, HttpServletResponse res) throws ServletException, IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(req.getInputStream()));
String json = "";
if(br != null){
json = br.readLine();
}
if (json.length() > 0)
System.out.println("--"+json);
JSONObject resJo = new JSONObject();
resJo.put("RTN_MSG", "응답데이터입니다");
this.printJSON(res, resJo.toJSONString());
}
private void printJSON(HttpServletResponse res, String jsonStr) {
if (jsonStr != null) {
res.setCharacterEncoding("UTF-8");
res.setContentType("application/json");
res.setHeader("Cache-Control", "no-cache");
PrintWriter out;
try {
out = res.getWriter();
out.print(jsonStr);
out.flush();
out.close();
} catch (Exception e) {
e.printStackTrace();
System.out.println(e);
}
}
}