프로그래밍/buycycle

eBest xing api RESTful 요청 예제

말춘이 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 메시지 구현이 가능하다.

반응형