[VB.NET]API串接之 商工登記資料查詢

目前公司的幾個小需求 ...

簡單來說就是WinForm接API啦

距離上次發文接近半年之久,真是自形慚愧
這次就來接一些API練習一下吧,這次主管希望公司的客戶系統能快速取得客戶的事業資料
不要再浪費時間開Browser查詢了

商工登記公示資料查詢

原本以為政府的頁面大多是外包廠商,但事實上自去年起,這個網站就開放API介接囉

總之就是填個資料...掃描後寄信過去,大概​1~2小時對方就會回信
這個網站開發得很佛心,他特別提供了開發指引,看起來是用Get來取資料...
我當時申請的是Json格式,取得的原始資料如下圖(用Acer的統編來測試,我另外用了JsonEditOnline來幫助查看資訊)


我想要透過以下的條件取得資料

輸入統一編號,取得該公司的所營事業資料

 就簡單寫個Function囉,因為是Json資料,請記得到Nuget安裝Json.NET並引用

Option Strict On
Imports Newtonsoft.Json.Linq
Imports System.Text
Imports System.Net

Module Module1
    Sub Main()
        Console.WriteLine("請輸入統一編號:")
        Dim x As String = Console.ReadLine()
        Dim Value As JArray = GetBusinessItem(x)

        For Each Key In Value
            Console.WriteLine(Key.Item("Business_Item").ToString & " " & Key.Item("Business_Item_Desc").ToString)
        Next

        Console.ReadKey()
    End Sub

    Private Function GetBusinessItem(businessNo As String) As JArray

        Dim Client As New WebClient()

        Dim url As String = "http://data.gcis.nat.gov.tw/od/data/api/236EE382-4942-41A9-BD03-CA0709025E7C?$format=json&$filter=Business_Accounting_NO%20eq%20" & businessNo

        Dim JsonStr As String = ""
        JsonStr = Encoding.UTF8.GetString(Client.DownloadData(New Uri(url.Trim())))

        Dim Obj As JArray = CType(Newtonsoft.Json.JsonConvert.DeserializeObject(JsonStr), JArray)

        Dim GetValue As JArray = CType(Newtonsoft.Json.JsonConvert.DeserializeObject(Obj.Item(0).Item("Cmp_Business").ToString), JArray)

        Return GetValue

    End Function

End Module

我只要取得該公司的營登資料,所以只需要取得Key:Cmp_Business的序列即可...
大概就這樣,這邊用暴雪(Blizzard)的統編來測試,如下圖

單純筆記,皆為非正規作法,旁門左道,胡搞瞎搞。