반응형

* VBNET 한국 수출입 은행 공공데이터를 이용한 대출 금리 정보 가져 오기 예제...

Main

- 사용한 컨트롤 : DateTimepicker 1개, Button 1개, Label 4개

 

전체 소스 코드

Form1.vb

 

Imports System.Runtime.InteropServices
Imports System.Net
Imports System.IO
Imports System.Net.Json


Public Class Form1

    Private Sub button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles button1.Click
        'AP01 : 환율, AP02 : 대출금리, AP03 : 국제금리
 
        Dim strURL As String = "https://www.koreaexim.go.kr/site/program/financial/interestJSON?authkey=" + _
                               "DhvTGvqzZYg58GZMbo0C2eBhOHnLtj10&searchdate=" + _
                               dtp.Value.ToString("yyyyMMdd") + "&data=" + _
                               "AP02"
        Dim hwr As HttpWebRequest = WebRequest.Create(strURL)
        hwr.ContentType = "application/json"

        Using hwrResult As HttpWebResponse = CType(hwr.GetResponse(), HttpWebResponse)
            Dim sr As Stream = hwrResult.GetResponseStream()

            Using srd As StreamReader = New StreamReader(sr)
                Dim strResult As String = srd.ReadToEnd()
                Dim strErr As String = ""

                If (Not StringToJson(strResult, strErr)) Then
                    MessageBox.Show(strErr, "확 인", MessageBoxButtons.OK, MessageBoxIcon.Asterisk)
                End If

            End Using
            sr.Close()
            hwrResult.Close()
        End Using
    End Sub

    Private Function StringToJson(ByVal strTmp As String, ByRef strErr As String) As Boolean

        If strTmp.Length < 3 Then
            strErr = "영업일이 아닙니다. 확인 후 이용해 주세요."
            Return False
        End If

        Dim jtr As JsonTextParser = New JsonTextParser()
        'string 문자열 -> json 으로 변환
        Dim jo As JsonObject = jtr.Parse(strTmp)

        Dim jac As JsonArrayCollection = CType(jo, JsonArrayCollection)
        Dim iRow As Integer = 0

        Dim joc As JsonObjectCollection

        For Each joc In jac
            iRow += 1

            If (joc("result").ToString().Contains("1")) Then

                lbl1.Text = joc("sfln_intrc_nm").ToString().Split(":")(1).Replace("""", " ").Trim()
                lbl2.Text = joc("int_r").ToString().Split(":")(1).Replace("""", " ").Trim()
            End If
        Next

        Return True

    End Function

End Class


아래의 그림과 같이 Button Click Event 를 살펴 보면

strURL 부분의 지워진 부분은 각자 한국 수출입 은행에서 받은 인증키를 입력 하면 됩니다. 



출처: https://kdsoft-zeros.tistory.com/250 [삽질하는 개발자...]

 

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

 

[C#] [공공데이터] 한국 수출입 은행 Open API 사용하기전 가입 신청...

https://www.koreaexim.go.kr/site/main/index001 한국수출입은행 www.koreaexim.go.kr 네이버 에서 한국 수출입 은행 으로 검색 하시면 위 화면과 같이 홈페이지에 접속 할 수 있습니다. 홈페이지에 접속 후 정..

kdsoft-zeros.tistory.com

 

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

 

[VBNET] Json File Write & Read 예제...

* VBNET Json 파일 읽고 쓰기 예제... (System.Net.Json.dll) 파일 참조 위 첨부된 파일을 다운 받아 dll 참조 추가를 해줍니다. 오른쪽에 솔루션 탐색기가 나타나지 않는다면, 상단 메뉴 (보기) -> (솔루션탐

kdsoft-zeros.tistory.com

 

 

* 예제 결과

 

반응형
반응형

*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

 

* 예제 결과

 

결과 화면

 

반응형
반응형

* VBNET Json Parsing 을 이용한 로또 (Lotto) 당첨번호 읽어 오기 예제...

 

메인화면

전체 소스 코드

Form1.vb

 

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

Public Class Form1 


    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 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 Sub button2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles button2.Click 
        '빈값이거나 null 값이면... 
        If IsNullString(textBox1.Text) Then 
            MessageBox.Show("빈 값일 순 없습니다.") 
            Return 
        End If 

        '숫자가 아니면... 
        If IsInt(textBox1.Text) = 0 Then 
            MessageBox.Show("숫자만 입력 해 주세요.") 
            Return 
        End If 

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

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


        'Json 으로 바꾸기... 
        Dim jtr As JsonTextParser = New JsonTextParser() 
        Dim jo As JsonObject = jtr.Parse(strReturnValue) 

        Dim jac As JsonObjectCollection = CType(jo, JsonObjectCollection) 

        '불러오기가 성공 하면... 
        textBox2.Text = "" 
        If jac("returnValue").GetValue().ToString() = "success" Then 
            '텍스트 박스에 뿌려주기... 
            textBox2.Text += "로또 당첨일: " + jac("drwNoDate").GetValue().ToString() + System.Environment.NewLine 
            textBox2.Text += "로또 회차: " + jac("drwNo").GetValue().ToString() + System.Environment.NewLine + System.Environment.NewLine 
            textBox2.Text += "1등 당첨금: " + jac("firstWinamnt").GetValue().ToString() + System.Environment.NewLine 
            textBox2.Text += "1등 당첨 인원: " + jac("firstPrzwnerCo").GetValue().ToString() + " 명" + System.Environment.NewLine 
            textBox2.Text += "누적 상금: " + jac("totSellamnt").GetValue().ToString() + System.Environment.NewLine + System.Environment.NewLine 
            textBox2.Text += "당첨 번호: " + jac("drwtNo1").GetValue().ToString() + _ 
                                        "," + jac("drwtNo2").GetValue().ToString() + _ 
                                        "," + jac("drwtNo3").GetValue().ToString() + _ 
                                        "," + jac("drwtNo4").GetValue().ToString() + _ 
                                        "," + jac("drwtNo5").GetValue().ToString() + _ 
                                        "," + jac("drwtNo6").GetValue().ToString() + System.Environment.NewLine 
            textBox2.Text += "보너스 번호: " + jac("bnusNo").GetValue().ToString() + System.Environment.NewLine 
        End If 


    End Sub 

    Private Sub textBox1_KeyDown(ByVal sender As System.Object, ByVal e As System.Windows.Forms.KeyEventArgs) Handles textBox1.KeyDown 
        '사용자가 엔터키를 입력 하면... 
        If e.KeyCode = Keys.Enter Then 
            '버튼 이벤트 함수 불러오기 
            button2_Click(Nothing, Nothing) 
        End If 

    End Sub 

End Class

 

 

* 예제 결과

 

결과 화면

 

↓ 참조 문서 

 

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

 

[VBNET] Json File Write & Read 예제...

* VBNET Json 파일 읽고 쓰기 예제... (System.Net.Json.dll) 파일 참조 위 첨부된 파일을 다운 받아 dll 참조 추가를 해줍니다. 오른쪽에 솔루션 탐색기가 나타나지 않는다면, 상단 메뉴 (보기) -> (솔루션탐색..

kdsoft-zeros.tistory.com

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

 

[VBNET] string 을 int 및 double 형으로 변환 하기, string null 체크

* string 문자열을 정수 및 실수 형으로 변환 하기 예제... 전체 소스코드 Form1.vb Public Class Form1 Private Sub button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles butto..

kdsoft-zeros.tistory.com

 

반응형
반응형

* VBNET Json 파일 읽고 쓰기 예제...

(System.Net.Json.dll) 파일 참조 

 

 

System.Net.Json.dll
0.02MB

위 첨부된 파일을 다운 받아 dll 참조 추가를 해줍니다.

오른쪽에 솔루션 탐색기가 나타나지 않는다면, 상단 메뉴 (보기) -> (솔루션탐색기) 를 선택 해 줍니다.

 

My Project 를 마우스 왼쪽 버튼 더블 클릭을 하면 위 그림 처럼 프로젝트 속성으로 들어 갈 수 있습니다.

왼쪽 참조 메뉴를 클릭 -> 추가 버튼을 클릭 합니다.

 

찾아보기 탭에서 System.Net.Json.dll 파일 위치를 찾아가셔서 클릭 후 추가 해 줍니다.

참고로 저 같은 경우 항상 참조 dll 은 프로젝트 생성 폴더에 같이 놔두기에 위와 같이 바로 찾을 수 있음.

 

위 그림 처럼 나오게 되면 System.Net.Json 파일이 참조가 완료 되었습니다.

 

* 예제 메인화면

전체 소스코드

Form1.vb

 

Imports System.Net.Json

Public Class Form1

    '현재 EXE 파일이 생성 되는 폴더 위치
    Dim strLocalPath As String = Application.ExecutablePath.Substring(0, Application.ExecutablePath.LastIndexOf("\"))

    Private Sub button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles button1.Click
        'Json Write
        '파일이 존재한다면 삭제...
        If System.IO.File.Exists(strLocalPath + "\\Test.json") Then
            System.IO.File.Delete(strLocalPath + "\\Test.json")
        End If

        'Json Write...
        Dim root As JsonObjectCollection = New JsonObjectCollection()

        'Json Title 정하기 Server_Info
        Dim jacServer As JsonArrayCollection = New JsonArrayCollection("Server_Info")

        'Json Title 에 속한 노드(속성) 만들기
        Dim joc As JsonObjectCollection = New JsonObjectCollection()
        joc.Add(New JsonStringValue("IP", "192.168.0.11"))
        joc.Add(New JsonStringValue("PW", "1231231231"))
        joc.Add(New JsonStringValue("DataBase", "TEST"))
        jacServer.Add(joc)

        Dim jacTest As JsonArrayCollection = New JsonArrayCollection("Test_Info")
        Dim joc2 As JsonObjectCollection = New JsonObjectCollection()
        joc2.Add(New JsonStringValue("X", "100"))
        joc2.Add(New JsonStringValue("Y", "200"))
        joc2.Add(New JsonStringValue("Z", "300"))
        jacTest.Add(joc2)

        '최상위 노드에 속성 노드 추가
        root.Add(jacServer)
        root.Add(jacTest)

        '파일에 쓰기...
        Dim strRoot As String = root.ToString()
        textBox1.Text = strRoot
        System.IO.File.WriteAllText("Test.json", strRoot)

    End Sub

    Private Sub button2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles button2.Click
        'Json Read

        '파일이 존재 하지 않으면...
        If Not System.IO.File.Exists(strLocalPath + "\\Test.json") Then
            Return
        End If

        'Json Read...
        Dim strReturnValue As String = System.IO.File.ReadAllText("Test.json")
        If strReturnValue = "" Then
            MessageBox.Show("불러오기 실패...")
            Return
        End If

        'Json 으로 바꾸기...
        Dim jtr As JsonTextParser = New JsonTextParser()
        Dim jo As JsonObject = jtr.Parse(strReturnValue)

        Dim jac As JsonObjectCollection = CType(jo, JsonObjectCollection)
        Dim arr1 As JsonArrayCollection = CType(jac("Server_Info"), JsonArrayCollection)
        Dim arr2 As JsonArrayCollection = CType(jac("Test_Info"), JsonArrayCollection)

        textBox2.Text = ""

        '첫번째 속성 읽기...
        For Each joc As JsonObjectCollection In arr1
            textBox2.Text += "Server_Info" + System.Environment.NewLine
            textBox2.Text += "IP: " + joc("IP").GetValue().ToString() + System.Environment.NewLine
            textBox2.Text += "PW: " + joc("PW").GetValue().ToString() + System.Environment.NewLine
            textBox2.Text += "DataBase: " + joc("DataBase").GetValue().ToString() + System.Environment.NewLine
        Next

        textBox2.Text += System.Environment.NewLine

        '두번째 속성 읽기...
        For Each joc2 As JsonObjectCollection In arr2
            textBox2.Text += "Test_Info" + System.Environment.NewLine
            textBox2.Text += "X: " + joc2("X").GetValue().ToString() + System.Environment.NewLine
            textBox2.Text += "Y: " + joc2("Y").GetValue().ToString() + System.Environment.NewLine
            textBox2.Text += "Z: " + joc2("Z").GetValue().ToString() + System.Environment.NewLine
        Next

    End Sub
End Class

 

* 예제 결과

 

Write Button Click

 

 

Read Button Click



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

 

[C#] Json File Write & Read 예제

* C# Json 파일 읽기 쓰기 예제... (System.Net.Json.dll) 파일 참조 위 첨부된 파일을 다운 받아 dll 참조 추가를 해줍니다. 오른쪽에 솔루션 탐색기가 나타나지 않는다면, 상단 메뉴 (보기) -> (솔루션탐색기)..

kdsoft-zeros.tistory.com

 

반응형

+ Recent posts