로또당첨번호API/로또추첨번호/로또API/로또페이지개발로또당첨번호API사용법/로또추첨번호/로또API/로또페이지개발/로또API사용방법/로또페이지개발하는법/로또API 사용하는 법

 

로또 관련 페이지를 만들기 위해서 제일 처음 찾는 것이 바로 로또API일 것이다.

여기저기 뒤져 보다가 당첨결과를 확인 할 수 있는 API를 발경하였다. 

개인적인 공부용으로 로또 관련페이지를 만들었는데, 요긴하게 사용하였다.

물론 아래 API외에도 웹크롤링을 사용해서 다른 정보들도 가져오긴 했지만, 우선 기본이 되는 아래 API부터 사용해보자!

 

사용하는 소스를 그대로 올렸는데, 사실 요청URL부분만 보면 될것 같다.

각자의 스타일에 맞게 잘 사용해봅시다!

 

1. API호출 및 저장

public void InsertLottoNumber(string targetNumber)
{
    DBConn dbSql = new DBConn();
    StringBuilder sb = new StringBuilder();
    DataSet ds = new DataSet();
    Util util = new Util()
    try
    {
    	//이미 등록된 회차인지 확인
        sb.Append(" select * from [데이터베이스스키마] where drwNo=@drwNo ");
        sb.Replace("@drwNo", targetNumber);
        ds = dbSql.ExecuteWithDataSet(sb.ToString())
        
        //등록되지 않은 회차이면 API를 호출한다.
        if (util.ChkDsIsNull(ds))
        {
        	//요청URL-> 사실 이것만 알면 된다.
            string URL = "https://www.dhlottery.co.kr/common.do?method=getLottoNumber&drwNo=" + targetNumber
            
            using (var webClient = new System.Net.WebClient())
            {
                var myJsonString = webClient.DownloadString(URL)
                var jo = JObject.Parse(myJsonString)
                
                //데이터베이스에 저장
                if(jo.GetValue("returnValue").ToString() != "fail")
                {
                    string drwNo = jo.GetValue("drwNo").ToString();
                    string totSellamnt = jo.GetValue("totSellamnt").ToString();
                    string returnValue = jo.GetValue("returnValue").ToString();
                    string drwNoDate = jo.GetValue("drwNoDate").ToString();
                    string firstWinamnt = jo.GetValue("firstWinamnt").ToString();
                    string firstPrzwnerCo = jo.GetValue("firstPrzwnerCo").ToString();
                    string drwtNo1 = jo.GetValue("drwtNo1").ToString();
                    string drwtNo2 = jo.GetValue("drwtNo2").ToString();
                    string drwtNo3 = jo.GetValue("drwtNo3").ToString();
                    string drwtNo4 = jo.GetValue("drwtNo4").ToString();
                    string drwtNo5 = jo.GetValue("drwtNo5").ToString();
                    string drwtNo6 = jo.GetValue("drwtNo6").ToString();
                    string bnusNo = jo.GetValue("bnusNo").ToString()
                    sb.Clear();
                    sb.AppendLine("insert into [데이터베이스스키마]  ");
                    sb.AppendLine("values( ");
                    sb.AppendLine(drwNo + ",");
                    sb.AppendLine(totSellamnt + ",");
                    sb.AppendLine("'" + returnValue + "',");
                    sb.AppendLine("'" + drwNoDate + "',");
                    sb.AppendLine(firstWinamnt + ",");
                    sb.AppendLine(firstPrzwnerCo + ",");
                    sb.AppendLine(drwtNo1 + ",");
                    sb.AppendLine(drwtNo2 + ",");
                    sb.AppendLine(drwtNo3 + ",");
                    sb.AppendLine(drwtNo4 + ",");
                    sb.AppendLine(drwtNo5 + ",");
                    sb.AppendLine(drwtNo6 + ",");
                    sb.AppendLine(bnusNo);
                    sb.AppendLine(")")
                    dbSql.ExcuteNonQuery(sb.ToString())
            
            }
        }
    }
    catch
    {
        //string tmp = ex.ToString();
    }
    finally
    {
        dbSql.Close();
        dbSql = null;
    
}

 

 

2. API호출시 리턴값 확인 

 

리턴결과

ASP.NET Twitter api 1.1

step 1.

트위터 api를 사용하려면 인증된 아이디가 필요하다.

— 참고 페이지 —
인증 받는 법 : Twitter API v1.1 with OAuth
인증 받는 곳 : 트위터 개발자 페이지

step 2.

트위터 서비스 관련 함수
구글링을 통해 가져온 소스가 다수 포함되어 있으나, 정확한 출처를 기억하지 못해 적지 못하였습니다. 출처 아시는 분은 제보 부탁드려요.

/// <summary>
        /// 트위터 API 접속 ID 등 세팅
        /// </summary>
        public void SetTwitterApi(string _consumerkey, string _consumersecret, string _accesstoken, string _accesssecret)
        {
            this.consumerkey = _consumerkey;
            this.consumersecret = _consumersecret;
            this.accesstoken = _accesstoken;
            this.accesssecret = _accesssecret;
        }

        public DataTable GetTwiter(int cnt)
        {
            #region api 1.1

            StringBuilder sb = new StringBuilder();
            sb.AppendLine("https://api.twitter.com/1.1/statuses/user_timeline.json?user_id=받은 아이디");
            sb.AppendLine("&trim_user=false");
            sb.AppendLine("&count=" + cnt + "");

            //트위터 개발자 사이트에서 얻은 값을 입력.
            string oauthconsumerkey = "";
            string oauthconsumersecret = "";
            string oauthtoken = "";
            string oauthtokensecret = "";

            SetTwitterApi(oauthconsumerkey, oauthconsumersecret, oauthtoken, oauthtokensecret);
            string jsonStrTimeline = GetTwitterData(sb.ToString());
            JsonTextParser parser = new JsonTextParser();
            JsonArrayCollection jArr = parser.Parse(jsonStrTimeline) as JsonArrayCollection;

            dt.Columns.Add(new DataColumn("ID", typeof(string)));                               // 트위터 글번호
            dt.Columns.Add(new DataColumn("TEXT", typeof(string)));                             // 트위터 내용
            dt.Columns.Add(new DataColumn("CREATED_AT", typeof(string)));                       // 작성일자
            dt.Columns.Add(new DataColumn("PROFILE_IMAGE_URL", typeof(string)));                // 프로파일 이미지

            DataRow dr = null;
            foreach (JsonCollection twit in jArr)
            {
                dr = dt.NewRow();
                dr[0] = twit[2].GetValue();
                dr[1] = twit[3].GetValue();
                dr[2] = twit[0].GetValue();
                JsonObjectCollection user = twit[11] as JsonObjectCollection;
                dr[3] = user[27].GetValue();
                dt.Rows.Add(dr);
            }

            #endregion

            return dt;
        }

        #endregion

        #region [   트위터 서비스 관련 함수   ]

        private string EncodeCharacters(string data)
        {
            //as per OAuth Core 1.0 Characters in the unreserved character set MUST NOT be encoded
            //unreserved = ALPHA, DIGIT, '-', '.', '_', '~'
            if (data.Contains("!"))
                data = data.Replace("!", "%21");
            if (data.Contains("'"))
                data = data.Replace("'", "%27");
            if (data.Contains("("))
                data = data.Replace("(", "%28");
            if (data.Contains(")"))
                data = data.Replace(")", "%29");
            if (data.Contains("*"))
                data = data.Replace("*", "%2A");
            if (data.Contains(","))
                data = data.Replace(",", "%2C");

            return data;
        }  

        //this gets the json data from twitter api
        public string GetTwitterData(string resourceurl)
        {
            //create parameter list
            List<string> parameterlist;
            //check for query string
            if (resourceurl.Contains("?"))
            {
                parameterlist = getparameterlistfromurl(resourceurl);
                resourceurl = resourceurl.Substring(0, resourceurl.IndexOf('?'));
            }

            else
            {
                parameterlist = null;
            }
            //build the oauth header
            string authheader = buildheader(resourceurl, parameterlist);

            //make the request to the twitter api and get the JSON response
            string jsonresponse = TwitterWebRequest(resourceurl, authheader, parameterlist);

            return jsonresponse;


        }

        //retreive a list if parameters from the resource url. This will be used when making the request to the twitter api and in generating the signature
        private List<string> getparameterlistfromurl(string resourceurl)
        {

            //Uri MyUrl = new Uri(resourceurl);
            string querystring = resourceurl.Substring(resourceurl.IndexOf('?') + 1);

            List<string> listtoreturn = new List<string>();

            NameValueCollection nv = HttpUtility.ParseQueryString(querystring);

            foreach (string parameter in nv)
            {
                listtoreturn.Add(parameter + "=" + Uri.EscapeDataString(nv[parameter].ToString()));

            }
            return listtoreturn;
        }



        //this gets the timeline data from twitter api
        private string buildheader(string resourceurl, List<string> parameterlist)
        {

            string nonce = Convert.ToBase64String(new ASCIIEncoding().GetBytes(DateTime.Now.Ticks.ToString()));
            TimeSpan timespan = DateTime.UtcNow - new DateTime(1970, 1, 1, 0, 0, 0, 0, DateTimeKind.Utc);
            string timestamp = Convert.ToInt64(timespan.TotalSeconds).ToString();

            string signature = getSignature(nonce, timestamp, resourceurl, parameterlist);

            // build the authentication header with all information collected

            var HeaderFormat = "OAuth " +
            "oauth_consumer_key=\"{0}\", " +
            "oauth_nonce=\"{1}\", " +
            "oauth_signature=\"{2}\", " +
            "oauth_signature_method=\"{3}\", " +
            "oauth_timestamp=\"{4}\", " +
            "oauth_token=\"{5}\", " +
            "oauth_version=\"{6}\"";

            string authHeader = string.Format(HeaderFormat,
            Uri.EscapeDataString(consumerkey),
            Uri.EscapeDataString(nonce),
            Uri.EscapeDataString(signature),
            Uri.EscapeDataString(signaturemethod),
            Uri.EscapeDataString(timestamp),
            Uri.EscapeDataString(accesstoken),
            Uri.EscapeDataString(version)
            );

            return authHeader;

        }



        private string getSignature(string nonce, string timestamp, string resourceurl, List<string> parameterlist)
        {
            // generate the base string for the signature

            string baseString = generatebasestring(nonce, timestamp, resourceurl, parameterlist);

            baseString = string.Concat("GET&", Uri.EscapeDataString(resourceurl), "&", Uri.EscapeDataString(baseString));


            // generate the signature using the base string, consumer secret and access secret from the application api. Using the HMAC-SHA1 signature method

            var signingKey = string.Concat(Uri.EscapeDataString(consumersecret), "&", Uri.EscapeDataString(accesssecret));
            string signature;

            //generate hash using signing key
            HMACSHA1 hasher = new HMACSHA1(ASCIIEncoding.ASCII.GetBytes(signingKey));

            signature = Convert.ToBase64String(hasher.ComputeHash(ASCIIEncoding.ASCII.GetBytes(baseString)));
            //get signature signature using the hash

            return signature;

        }

        private string generatebasestring(string nonce, string timestamp, string resourceurl, List<string> parameterlist)
        {

            string basestring = "";
            //create list with all the security parameters
            List<string> baseformat = new List<string>();
            baseformat.Add("oauth_consumer_key=" + consumerkey);
            baseformat.Add("oauth_nonce=" + nonce);
            baseformat.Add("oauth_signature_method=" + signaturemethod);
            baseformat.Add("oauth_timestamp=" + timestamp);
            baseformat.Add("oauth_token=" + accesstoken);
            baseformat.Add("oauth_version=" + version);


            //append parameter list as twitter requires the parameters to be in alphabetical order
            if (parameterlist != null)
            {
                baseformat.AddRange(parameterlist);

            }
            //sort list alphabetically
            baseformat.Sort();


            //loop through list and generate base string

            foreach (string value in baseformat)
            {
                basestring += value + "&";
            }

            basestring = basestring.TrimEnd('&');

            return basestring;


        }

        //makes the request to twitter and returns a string of JSON data

        private string TwitterWebRequest(string resourceurl, string authheader, List<string> parameterlist)
        {

            //build  the http web request to the twitter api
            ServicePointManager.Expect100Continue = false;

            string postBody;

            if (parameterlist != null)
            {
                postBody = GetPostBody(parameterlist);
            }
            else
            {
                postBody = "";
            }
            resourceurl += "?" + postBody;



            HttpWebRequest request = (HttpWebRequest)WebRequest.Create(resourceurl);
            request.Headers.Add("Authorization", authheader);
            request.Method = "GET";
            request.ContentType = "application/x-www-form-urlencoded";

            // Retrieve the response json data
            WebResponse response = request.GetResponse();

            //json reponse data
            string responseData = new StreamReader(response.GetResponseStream()).ReadToEnd();

            return responseData;

        }

        private string GetPostBody(List<string> parameterlist)
        {
            string stringtoreturn = "";

            foreach (string item in parameterlist)
            {
                stringtoreturn += item + "&";

            }
            stringtoreturn = stringtoreturn.TrimEnd('&');
            return stringtoreturn;

        }

        #endregion

위 소스 중 아래 부분은 System.Net.Json.dll 파일이 추가 되어야 함.

JSON for.NET Download

JsonTextParser = new JsonTextParser();
JsonArrayCollenction = parser.Parse(jsonStrTimeline) as JsonArrayCollection;

+ Recent posts