로또당첨번호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파일쓰기/C#TEXT파일/C#파일읽기쓰기방법

 

개발을 하다보면 텍스트 파일에 간단하게 로그를 남기고 싶은 경우가 있다. 

그럴 경우에 아래와 같이 날짜별로 로그파일을 생성해서 남기면 좋다.

경로등은 편하게 사용하면 된다. 

여기서 중요한 부분은 using(StreamWriter file = new StreamWriter(fullPath, true)) 부분이다.

C#에서 using을 사용하는 경우는 별도로 close를 안해줘도 메모리를 반환해주기 때문이다.

 

어쨌든 간단하게 로그를 남기고 확인 할 수 있다.

나의 경우에는 WebAPI를 구성하는데 있어서 클라이언트 개발자가 제대로 호출을 했는지, 파라미터가 제대로 넘어왔는지 확인하기 위해서 아래 함수를 사용하였다.

그럼 모두 즐코딩하세요!

 

public void WriteDateLog(string project, string logGub, string text)
{
    string writeTime = DateTime.Now.ToString("yyyyMMdd HHmmss")
    string fullPath = @"D:\log\" + project + @"\" + DateTime.Now.ToString("yyyyMMdd") + ".txt"
    using (StreamWriter file = new StreamWriter(fullPath, true))
    {
        file.WriteLine(string.Format("{0} :{1}: {2}", writeTime, logGub, text));
    }
}

 

 

DB에서 데이터를 불러와서 뿌려주는 방법은 여러가지가 있지만, asp.net에서는 repeater가 자주 사용된다.

webform 방식으로 구현된 페이지에서 repeater를 사용하는 방법이다.

 

aspx 구현

//aspx 구현부분 
<asp:Repeater ID="rptList" runat="server" onitemdatabound="rptList_ItemDataBound" >
<ItemTemplate>
                <tr>
                <td><%# DataBinder.Eval(Container.DataItem, "SEQNO")%></td>
                <td class="alignL">
                <a href=''#''  onclick="fnView(''<%# DataBinder.Eval(Container.DataItem, "SEQNO")%>'',''<%=ViewData["PAGE"] %>'',''<%=ViewData["SEARCH_TYPE"] %>'',''<%=ViewData["SEARCH_VALUE"] %>'');">
                <%# DataBinder.Eval(Container.DataItem, "SUBJECT").ToString() %>
                </td>
                <td><%#DataBinder.Eval(Container.DataItem, "WDATE").ToString().Length >= 8 ? DataBinder.Eval(Container.DataItem, "WDATE").ToString().Substring(0, 4) + "-" + DataBinder.Eval(Container.DataItem, "WDATE").ToString().Substring(4, 2) + "-" + DataBinder.Eval(Container.DataItem, "WDATE").ToString().Substring(6, 2) : DataBinder.Eval(Container.DataItem, "WDATE").ToString()%>   </td>
                <td><asp:Label ID="isFile" runat="server"></asp:Label></td>
                <td><%# DataBinder.Eval(Container.DataItem, "VISIT")%></td>
                </tr>                
</ItemTemplate>
</asp:Repeater>

 

aspx.cs 구현

public void InitData(){
    //cs단에서 바인딩 해주는 부분 
    DataTable dt = new DataTable();
    dt = getList(); //각자 바인딩이 필요한 데이터를 불러온다.
    rptList.DataSource = dt.DefaultView;
    rptList.DataBind();
}

//리피터에 바인딩 하면서 데이터를 셋팅 해주는 부분
//db데이터를 그대로 노출하는 경우도 있지만, 셋팅이 필요한 경우가 많기 때문에 자주 사용한다.
protected void rptList_ItemDataBound(object sender, RepeaterItemEventArgs e)
{
    if (e.Item.ItemIndex != -1)
    {         
        Label lb = (Label)e.Item.FindControl("isFile");
        string FileName = ((System.Data.DataRowView)e.Item.DataItem)["FILENAME"].ToString().Trim();
        if (FileName.Length > 0)
        {
            lb.Text = @"<img src=""/images/icon/icon_disk.gif"" >";
        }
    }
}
ASP.NET 노드추가 / 속성추가 / xml node 추가 / AppendChild


XML 사용시 노드 및 속성을 추가하는 경우에 사용가능하다.
여러가지 형태로 응용해서 함수를 생성해 두면, 많은 작업이 필요한 경우에 시간을 단축할 수 있다.



파일 유무체크 : http://gyunbox.tistory.com/101


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
32
33
34
35
36
37
38
 public ActionResult XmlTest()
 {
     AddXmlNode("/images/xml/test.xml""PRODUCT/CONTENT_2""MYCHILD""CODE""0001");
     return View();
 }
 
 /// <summary>
 /// xml 노드 추가하는 함수
 /// </summary>
 /// <param name="xmlPath">xml 위치</param>
 /// <param name="targetPath">노드를 추가할 위치</param>
 /// <param name="childName">자식 노드 이름</param>
 /// <param name="attName">자식 노드의 속성 이름</param>
 /// <param name="attValue">자식노드의 속성 값</param>
 public void AddXmlNode(string xmlPath, string targetPath, string childName, string attName, string attValue)
 {
     XmlDocument xmlDoc;
     XmlElement childElement;
     XmlAttribute xmlAtb;
     XmlNode parentNode;
 
     xmlDoc = new XmlDocument();
     xmlDoc.Load(Server.MapPath(xmlPath)); //xml 파일 로드
 
     parentNode = xmlDoc.SelectSingleNode(targetPath); // 노드를 추가할 부모노드 찾기
 
     childElement = xmlDoc.CreateElement(childName); // 자식 노드 생성
 
     xmlAtb = xmlDoc.CreateAttribute(attName); // 자식 노드에 추가할 속성 생성
     xmlAtb.Value = attValue; // 자식 노드에 추가할 속성에 값 넣기
 
     childElement.SetAttributeNode(xmlAtb); // 자식노드에 속성 적용
 
     parentNode.AppendChild(childElement); // 자식노드를 부모노드에 추가!!
 
     xmlDoc.Save(Server.MapPath(xmlPath));
     xmlDoc = null;
 }
cs


+ Recent posts