반응형

*VBNET Json 을 이용한 간단한 로또 당첨번호 확인 예제...

 

Main

 

- 사용한 컨트롤 : Button 1개, Label 3개, TextBox 8개, GroupBox 1개

 

- 참조 소스 

https://kdsoft-zeros.tistory.com/100

 

전체 소스 코드

Form1.vb

 

Imports System.Net.Json
Imports System.Net
Imports System.IO

Public Class Form1

    Dim iCount As Integer = 0
    Dim ltResult As List(Of Integer) = New List(Of Integer)()

    Private Function IsNullString(ByVal str As String) As Boolean
        Return String.IsNullOrEmpty(str)
    End Function

    Private Function IsInt(ByVal ob As Object) As Integer
        If ob Is Nothing Then
            Return 0
        End If

        Dim iCheck As Integer = 0
        Dim bCheck As Boolean = Integer.TryParse(ob.ToString(), iCheck)

        If Not bCheck Then
            Return 0
        End If

        Return iCheck
    End Function

    Private Function IsCheck() As Boolean
        '문자열 체크.
        If IsNullString(TextBox1.Text) And _
            IsNullString(TextBox2.Text) And _
            IsNullString(TextBox3.Text) And _
            IsNullString(TextBox4.Text) And _
            IsNullString(TextBox5.Text) And _
            IsNullString(TextBox6.Text) Then

            MessageBox.Show("빈 값일 순 없습니다.")

            Return False
        End If

        '숫자 체크...
        If IsInt(TextBox1.Text) And _
            IsInt(TextBox2.Text) And _
            IsInt(TextBox3.Text) And _
            IsInt(TextBox4.Text) And _
            IsInt(TextBox5.Text) And _
            IsInt(TextBox6.Text) Then

            MessageBox.Show("숫자만 입력 해 주세요.")

            Return False
        End If

        '회차 번호 체크...
        If IsInt(TextBox8.Text) = 0 And IsNullString(TextBox8.Text) Then
            MessageBox.Show("숫자만 입력 또는 빈 값일 순 없습니다.")
            TextBox8.Text = ""
            TextBox8.Focus()
            Return False
        End If

        Return True

    End Function

    Private Function GetHttpLottoString(ByVal strUri As String) As String
        Dim strResponseText As String = String.Empty

        Dim request As HttpWebRequest = CType(WebRequest.Create(strUri), HttpWebRequest)
        request.Method = "GET"

        '웹리퀘스트 타임아웃 
        request.Timeout = 20 * 1000 ' 20초
        'request.Headers.Add("Authorization", "BASIC SGVsbG8="); // 헤더 추가 방법

        '응답 받기
        Using hwr As HttpWebResponse = CType(request.GetResponse(), HttpWebResponse)
            '응답이 정상적으로 이루어 졌으면... 
            If hwr.StatusCode = HttpStatusCode.OK Then
                Dim respStream As Stream = hwr.GetResponseStream()
                Using sr As StreamReader = New StreamReader(respStream)
                    strResponseText = sr.ReadToEnd()
                End Using
            Else
                strResponseText = ""
            End If

        End Using

        Return strResponseText
    End Function

    Private Sub Check_Result(ByVal iNumber As Integer)
        '-2 한 값은 마집막 보너스 넘버는 체크 안함...
        For i As Integer = 0 To ltResult.Count - 2

            If iNumber = ltResult(i) Then
                iCount = iCount + 1
                Return
            End If

        Next

    End Sub

    Private Sub MessageResult(ByVal iBonus As Integer)

        Select Case iCount

            Case 6
                lblResult.Text = "축하 드립니다. 1등에 당첨 되셨습니다."
            Case 5
                If iBonus = 1 Then
                    lblResult.Text = "축하 드립니다. 2등에 당첨 되셨습니다."
                Else
                    lblResult.Text = "축하 드립니다. 3등에 당첨 되셨습니다."
                End If

            Case 4
                lblResult.Text = "축하 드립니다. 4등에 당첨 되셨습니다."
            Case 3
                lblResult.Text = "축하 드립니다. 5등에 당첨 되셨습니다."

            Case Else
                lblResult.Text = "꽝 입니다. 다음 기회에...반드시 성공을..."

        End Select

    End Sub

    Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
        Dim ltLottoNumber As List(Of Integer) = New List(Of Integer)
        Dim iBonus As Integer = 0

        '초기화...
        ltResult.Clear()
        iCount = 0

        '텍스트 박스들 체크...
        If Not IsCheck() Then
            Return
        End If

        ltLottoNumber.Add(Convert.ToInt32(TextBox1.Text.Trim()))
        ltLottoNumber.Add(Convert.ToInt32(TextBox2.Text.Trim()))
        ltLottoNumber.Add(Convert.ToInt32(TextBox3.Text.Trim()))
        ltLottoNumber.Add(Convert.ToInt32(TextBox4.Text.Trim()))
        ltLottoNumber.Add(Convert.ToInt32(TextBox5.Text.Trim()))
        ltLottoNumber.Add(Convert.ToInt32(TextBox6.Text.Trim()))

        '로또 회차 넘버 불러오기...
        Dim strReturnValue As String = GetHttpLottoString("https://www.dhlottery.co.kr/common.do?method=getLottoNumber&drwNo=" + TextBox8.Text)

        If strReturnValue = "" Then
            MessageBox.Show("Lotto Number 불러오기 실패...")
            Return
        End If

        'json 파싱
        Dim jtr As Json.JsonTextParser = New Json.JsonTextParser()
        Dim jo As Json.JsonObject = jtr.Parse(strReturnValue)
        Dim jac As Json.JsonObjectCollection = jo

        '불러오기가 성공 하면...
        If jac("returnValue").GetValue().ToString() = "success" Then
            ltResult.Add(Convert.ToInt32(jac("drwtNo1").GetValue().ToString().Trim()))
            ltResult.Add(Convert.ToInt32(jac("drwtNo2").GetValue().ToString().Trim()))
            ltResult.Add(Convert.ToInt32(jac("drwtNo3").GetValue().ToString().Trim()))
            ltResult.Add(Convert.ToInt32(jac("drwtNo4").GetValue().ToString().Trim()))
            ltResult.Add(Convert.ToInt32(jac("drwtNo5").GetValue().ToString().Trim()))
            ltResult.Add(Convert.ToInt32(jac("drwtNo6").GetValue().ToString().Trim()))
            ltResult.Add(Convert.ToInt32(jac("bnusNo").GetValue().ToString().Trim()))
            TextBox7.Text = jac("bnusNo").GetValue().ToString().Trim()
        End If

        'Check Result 
        For i As Integer = 0 To ltLottoNumber.Count - 1

            Check_Result(ltLottoNumber(i))

            If ltLottoNumber(i) = ltResult(ltResult.Count - 1) Then
                iBonus = 1
            End If

            MessageResult(iBonus)
        Next

    End Sub

    Private Sub TextBox8_KeyDown(ByVal sender As System.Object, ByVal e As System.Windows.Forms.KeyEventArgs) Handles TextBox8.KeyDown
        If e.KeyCode = Keys.Enter Then
            Button1_Click(Nothing, Nothing)
        End If
    End Sub
End Class

 

* 예제 결과

 

결과 화면

 

반응형

+ Recent posts