728x90
반응형
Demon 만들기
[1] 10분마다 한 번씩 도는 프로세스
1. API 사용
2. 1000건의 데이터를 테이블에 저장
테이블 데이터가 만건이 되면 프로세스 실행 안함
3. i_title, i_content
테이블 생성
[2] 테이블 데이터가 10000건일 경우에만 실행되는 프로세스
1. title과 content 합침
2. 특수문자 제거해서 새로운 테이블에 줄바꿈 단위로 저장
API를 이용해서 DATA 가지고 오기
URL 에 실어보낼 데이터 조합 후 API 접촉 시도
package com.rsn;
import java.util.HashMap;
import java.util.Map;
import com.rsn.def.job.Demon_Test_API;
public class Demon_Test {
private static String url = "http://~~~~~~~~~~/json.php?";
public static void main(String[] args) {
Demon_Test test = new Demon_Test();
test.testschedule();
Demon_Test_API api = new Demon_Test_API();
Map<String, String> att = new HashMap<String, String>();
// 속성 정리
att.put("NUM","123123");
att.put("NAME","SOOBIN");
att.put("PHONE","01012311231");
att.put("AGE","10");
// URL 완성
url += api.url_Create(att);
// URL 접근
api.api_Get_Data(url);
}
}
URL + 데이터 조합
/**
* URL 조합
* @param att
*/
public String url_Create( Map<String, String> att ) {
String NUM = "NUM" +"="+ att.get("NUM");
String NAME = "NAME" +"="+ att.get("NAME");
String PHONE = "PHONE" +"="+ att.get("PHONE");
String AGE = "AGE" +"="+ att.get("AGE");
return NUM + "&" + NAME + "&" + PHONE + "&" + AGE;
}
DATA 가져와서 정리
package com.rsn.def.job;
import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.net.HttpURLConnection;
import java.net.URL;
import java.util.Map;
import org.json.JSONArray;
import org.json.JSONObject;
/**
*
* @author soobin
*
* API 에 관련된 로직을 수행
*
*/
public class Demon_Test_API {
/**
* API 를 호출하여 DATA 를 가져옴
*/
public void api_Get_Data( String strUrl ) {
Demon_Test_API API = new Demon_Test_API();
String json = API.send_Post(strUrl);
JSONObject jsonObject = new JSONObject(json);
JSONArray jsonArray = jsonObject.getJSONArray("data");
int length = jsonArray.length();
for( int i=0; i<length; i++ ) {
JSONObject tempObject = jsonArray.getJSONObject(i);
System.out.println(" 1) "+ tempObject.getLong("MAIN.DATA.NUM"));
System.out.println(" 2) "+ tempObject.getString("MAIN.DATA.NAME"));
System.out.println(" 3) "+ tempObject.getString("MAIN.DATA.PHONE"));
System.out.println(" 4) "+ tempObject.getLong("MAIN.DATA.AGE"));
}
}
/**
* API 를 호출하여 DATA 를 가져옴
* @return
*/
private String send_Post(String strUrl) {
try{
// URL 연결
URL url = new URL(strUrl);
HttpURLConnection httpURLConnection = (HttpURLConnection)url.openConnection();
// 지연 방지
httpURLConnection.setConnectTimeout(5000);
httpURLConnection.setReadTimeout(5000);
// 설정
httpURLConnection.setRequestMethod("POST");
httpURLConnection.setRequestProperty("Content-Type", "application/json");
// Server 통신에서 출력 가능한 상태
httpURLConnection.setDoOutput(true);
// 캐싱데이터의 캐치 유무
httpURLConnection.setUseCaches(false);
StringBuffer stringBuffer = new StringBuffer();
if(httpURLConnection.getResponseCode() == HttpURLConnection.HTTP_OK) {
BufferedReader br = new BufferedReader(new InputStreamReader(httpURLConnection.getInputStream(), "utf-8"));
String line;
while( (line = br.readLine() ) != null ) {
stringBuffer.append(line).append("\n");
}
br.close();
return stringBuffer.toString();
}else {
return httpURLConnection.getResponseMessage();
}
}catch (Exception e) {
e.printStackTrace();
return null;
}
}
}
728x90
반응형
'개발중 > Java' 카테고리의 다른 글
[Java] Java8 람다식 (0) | 2021.02.24 |
---|---|
String,StringBuffer, StringBuilder 차이점 (0) | 2021.02.24 |
java 에서 data → excel 파일 (0) | 2021.02.10 |
mysql timeStamp 자바에서 날짜로 만들기 (0) | 2021.01.26 |
StringUtils.isBlank() (0) | 2021.01.07 |