본문 바로가기

개발중/Java

Demon 만들기 (API 사용)

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