ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • eBest xing api RESTful 요청 예제
    프로그래밍/buycycle 2021. 3. 29. 00:06
    반응형
     

    buycycle.name

    'Buycycle'은 증권사 API를 HTTP Json으로 요청 및 응답 받을 수 있습니다. 요청 받은 Json 메시지를 증권사 API 양식에 맞게 변환해 주는 자바 기반의 오픈 소스 입니다. HTTP RESTful을 제공함으로써 사용자

    opensource.buycycle.name

     

      Buycycle 설치 후 모듈을 실행 하면 기본 localhost 7771번 포트로 바인딩 된다.  이 URL을 통해 HttpURLConnection를 활용하여 json 메시지로 요청 및 응답을 받아 보겠다.

     

    import com.google.common.net.HttpHeaders;
    
    import java.io.*;
    import java.net.HttpURLConnection;
    import java.net.MalformedURLException;
    import java.net.URL;
    import java.util.List;
    import java.util.Map;
    
    public class BuyCyclePostRequest {
    
        public static void main(String[] args){
            try {
                URL url = new URL("http://localhost:7771/data/ebest/query");
                HttpURLConnection httpURLConnection = (HttpURLConnection) url.openConnection();
    
                httpURLConnection.setRequestMethod("POST");
                httpURLConnection.setRequestProperty(HttpHeaders.CONTENT_TYPE, "application/json;charset=utf8");
                httpURLConnection.setDoInput(true);
                httpURLConnection.setDoOutput(true);
    
                String requestMessage =
                    "{" +
                    "  \"body\": {" +
                    "    \"trName\": \"t1511\"," +
                    "    \"bNext\": false," +
                    "    \"query\": {" +
                    "      \"upcode\": \"001\"" +
                    "    }" +
                    "  }," +
                    "   \"header\": {" +
                    "    \"uuid\": \"7b81c375-d9b9-43c1-8449-77e561a979f2\"" +
                    "  }" +
                    "}";
    
                OutputStream os = httpURLConnection.getOutputStream();
                os.write(requestMessage.getBytes());
                os.flush();
    
                for (Map.Entry<String, List<String>> header : httpURLConnection.getHeaderFields().entrySet()) {
                    for (String value : header.getValue()) {
                        System.out.println(header.getKey() + " : " + value);
                    }
                }
    
                InputStream is = httpURLConnection.getInputStream();
                BufferedReader br = new BufferedReader(new InputStreamReader(is));
                String readLine = null;
    
                while ((readLine = br.readLine()) != null) {
                    System.out.println(readLine);
                }
    
                br.close();
                os.close();
    
            } catch (MalformedURLException e) {
                e.printStackTrace();
            } catch (IOException e) {
                e.printStackTrace();
            } finally {
            }
        }
    
    }
    

      Buycycle의 api를 참조하여 http://localhost:7771/data/ebest/query URL 설정 후 메소드는 'POST' 헤더 값엔 Content-Type 을 application/json 으로 설정 후 요청 하였다.

      테스트 해 본 TR은 '업종현재가'이며 '001'은 종합을 뜻한다.

      해당 요청에 대한 응답은 다음 스크린샷과 같다. 

    응답 헤더 및 응답 바디

      HttpURLConnection을 활용하여 간단한 예제 코드를 구현 하였다.  json 메시지에 대한 부분은 편의를 위해 String으로 하였으나 jackson 이나 gson 등 라이브러리를 활용하면 손 쉽게 json 메시지 구현이 가능하다.

    반응형

    댓글

Designed by Tistory.