티스토리 뷰

XingAPI/개발가이드

로그인하기

히처리 2018. 3. 15. 18:22

이 예제는 "서버 접속하기"를 이어서 설명한다. 서버에 접속이 되었다면 로그인을 해야 한다. 로그인을 하지 않고는 어떠한 서비스도 사용할 수 없다. 로그인을 하기 위해서는 XASession 객체의 Login()메서드를 이용한다.

 

로그인하기

1. 디자인 영역을 다음과 같이 수정하고 각 속성을 수정한다. 만일 TextBox에 입력되는 값을 숨길려면 속성창 > PasswordChar에 *을 입력하자.

 

2. 아래와 같이 콤보박스를 선택하고 속성창에서 Items속성의 줄임표단추(...)을 클릭한다.

 

3. 문자열 컬렉션 편집기에 실서버 모의투자를 입력한다. 이렇게 입력하면 items[0]은 실서버, items[1]은 모의투자가 된다.

 

4. 아래와 같이 코드를 수정하자.

using System;
using System.Windows.Forms;
using XA_SESSIONLib;

namespace XingAPI
{
    public partial class Form1 : Form
    {
        XASessionClass session;

        public Form1()
        {
            InitializeComponent();
        }

        private void Form1_Load(object sender, EventArgs e)
        {
            session = new XASessionClass();
            session._IXASessionEvents_Event_Login += XASession_Login;
            severTypeComboBox.SelectedIndex = 0;
        }

        private void XASession_Login(string code, string msg)
        {
            if (code == "0000")
            {
                listBox.Items.Add("로그인 성공");
                loginButton.Enabled = false;
            }
            else
            {
                MessageBox.Show("로그인 실패[" + code + "]: " + msg);
            }
        }

        private void loginButton_Click(object sender, EventArgs e)
        {
            string serverType;
            if (severTypeComboBox.SelectedIndex == 0)
            {
                // 실서버
                serverType = "hts.ebestsec.co.kr";
            }
            else
            {
                // 모의투자
                serverType = "demo.ebestsec.co.kr";
            }

            bool connectResult;
            connectResult = session.ConnectServer(serverType, 20001);
            if (connectResult)
            {
                listBox.Items.Add("서버 접속 성공");
            }
            else
            {
                var errCode = session.GetLastError();
                var errMsg = session.GetErrorMessage(errCode);
                MessageBox.Show(errMsg);
                return;
            }

            var id = idTextBox.Text;
            var pwd = pwdTextBox.Text;
            var certPwd = certPwdTextBox.Text;

            bool loginResult;
            loginResult = session.Login(id, pwd, certPwd, 0, false);
            if (!loginResult)
            {
                MessageBox.Show("로그인정보 서버전송 실패");
                return;
            }
        }
    }
}

5. F5를 눌러 실행하고 로그인에 성공하면 다음과 같이 된다.

 

코드 설명

        private void Form1_Load(object sender, EventArgs e)
        {
            session = new XASessionClass();
            session._IXASessionEvents_Event_Login += XASession_Login;
            severTypeComboBox.SelectedIndex = 0;
        }

xingAPI는 로그인 정보를 서버에 보내면 로그인 결과를 서버에서 보내준다. 이때 사용되는 이벤트는 XASessionClass._IXASessionEvents_Event_Login이다. 그래서 session._IXASessionEvents_Event_Login += XASession_Login를 추가해서 서버에서 로그인 결과를 보내면 XASession_Login()이 발생하도록 설정해 준다.

그리고 severTypeComboBox.SelectedIndex = 0;를 콤보박스가 0번 인덱스를 선택한 상태로 만들어서, 콤보박스에 "실시간"이 선택된 상태로 되게 만든다.

        private void XASession_Login(string code, string msg)
        {
            if (code == "0000")
            {
                listBox.Items.Add("로그인 성공");
                loginButton.Enabled = false;
            }
            else
            {
                MessageBox.Show("로그인 실패[" + code + "]: " + msg);
            }
        }

위의 메서드는 서버에서 로그인 결과를 보내면 호출되는 메서드가 된다. (이를 콜백메서드라고도 한다.) code가 "0000"이면 로그인이 성공한 것이고 그 외에는 로그인이 실패한 것이다. 로그인이 성공하면 listBox에 "로그인 성공"을 출력하고 "로그인 버튼"을 비활성화시켜서 눌리지 않게 한다. 로그인 실패시에는 메시지박스를 발생시킨다.

        private void loginButton_Click(object sender, EventArgs e)
        {
            string serverType;
            if (severTypeComboBox.SelectedIndex == 0)
            {
                // 실서버
                serverType = "hts.ebestsec.co.kr";
            }
            else
            {
                // 모의투자
                serverType = "demo.ebestsec.co.kr";
            }

로그인 버튼을 클릭하면 로그인을 시도한다. 로그인 과정은 다음과 같다.

  1. 서버에 접속한다.
  2. 로그인 정보를 서버에 보낸다.
  3. 서버에서 로그인 결과를 보내면, XASessionClass._IXASessionEvents_Event_Login 이벤트를 발생시킨다.

로그인 정보를 서버에 보낸다고 로그인이 되는 것이 아니다. 서버에서 로그인이 성공되었다고 결과를 보내야지 로그인이 된 것을 기억하자. 위에 코드는 콤보박스(serverTypeComboBox)에서 정보를 가져와 실서버로 선택했는지, 모의투자로 선택했는지 확인하고 그에 맞는 서버타입을 결정한다.

            bool connectResult;
            connectResult = session.ConnectServer(serverType, 20001);
            if (connectResult)
            {
                listBox.Items.Add("서버 접속 성공");
            }
            else
            {
                var errCode = session.GetLastError();
                var errMsg = session.GetErrorMessage(errCode);
                MessageBox.Show(errMsg);
                return;
            }

서버타입에 맞게 서버 접속을 시도한다. 만일 서버 접속이 실패하면 메시지박스를 발생시키고, return을 통해서 현재 메서드(loginButton_Click)의 진행을 중단한다.

            var id = idTextBox.Text;
            var pwd = pwdTextBox.Text;
            var certPwd = certPwdTextBox.Text;

            bool loginResult;
            loginResult = session.Login(id, pwd, certPwd, 0, false);
            if (!loginResult)
            {
                MessageBox.Show("로그인정보 서버전송 실패");
                return;
            }

텍스트박스에서 아이디와 비밀번호, 공인인증비밀번호를 얻어와서 session.Login()메서드를 이용하여 로그인정보를 서버로 전송한다. 서버로 로그인 정보를 보내는 것이 실패하면 메시지 박스를 발생시킨다. 그리고 return으로 메서드 실행을 중단한다. 로그인

'XingAPI > 개발가이드' 카테고리의 다른 글

반복 데이터 조회 (Occures)  (0) 2018.03.18
단일 데이터 조회  (0) 2018.03.15
서버 접속하기  (0) 2018.03.15
COM을 등록하는 방법  (1) 2018.03.15
XingAPI를 사용하기 위한 준비  (0) 2018.03.15
댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
TAG
more
«   2024/05   »
1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30 31
글 보관함