GitHub REST APIを使ってみる(VB)

投稿者: | 2021-12-20

各局皆様、こんにちは。アマチュア無線局、JS2IIUです。

今回はGitHub REST APIを使ってユーザ情報を取り出す手順を記録として残しておきます。実際の作業は2021年12月に実施しています。公式ドキュメントはこちら(https://docs.github.com/en/rest)です。

  • 前提
    • GitHubにアカウントがある(今回の内容の場合、アカウント名がわかればOK)
    • Visual Studio 2022
    • Visual Basicでプログラムします

目次

WPFアプリの外観

こちらはデバッグ中の画面です。下のほうにあるボタンをクリックすると、中央のテキストボックスにAPIから帰ってきた内容を表示します。単純です。

GitHub APIを使う

GitHub APIからユーザー情報をGETするため、以下のプログラムを作成しました。以前作成したコールサイン表示ツール(過去記事)と同じくWPFアプリ(.NET Framework)で作成しています。

GitHubのWEB APIへの問い合わせはSystem.Net.Http.HttpClient()で行います。USERNAMEのところは、読み出したいユーザーのユーザーネームに置き換えてください。

Class MainWindow
    Private Sub CALL_Button_Click(sender As Object, e As RoutedEventArgs) Handles CALL_Button.Click
        Dim url As String = "https://api.github.com/users/USERNAME"
        Dim WaitMsg As String = "Waiting API..."

        'ボタンクリックで一度内容をクリアする
        OutTextBox.Text = WaitMsg

        Using client As New System.Net.Http.HttpClient()

            Using response As System.Net.Http.HttpResponseMessage = client.GetAsync(url).Result
                Dim responseBody As String = response.Content.ReadAsStringAsync().Result
                OutTextBox.Text = responseBody
            End Using
        End Using
    End Sub
End Class

このまま実行すると以下のエラーが返ってきます。User-Agentヘッダを指定せよとのエラーです。

Request forbidden by administrative rules. Please make sure your request has a User-Agent header (http://developer.github.com/v3/#user-agent-required). Check https://developer.github.com for other possible causes.

User-Agentヘッダの追加

User-Agentをヘッダに追加するには以下のようにします。User-Agentの名称は適当です、今回はVBで書いているのでVB App・・・。

client.DefaultRequestHeaders.Add("User-Agent", "VB App")

プログラム全体は以下のように修正しました。

Class MainWindow
    Private Sub CALL_Button_Click(sender As Object, e As RoutedEventArgs) Handles CALL_Button.Click
        Dim url As String = "https://api.github.com/users/USERNAME"
        Dim WaitMsg As String = "Waiting API..."

        'ボタンクリックで一度内容をクリアする
        OutTextBox.Text = WaitMsg

        Using client As New System.Net.Http.HttpClient()

            'User-Agentの設定
            client.DefaultRequestHeaders.Add("User-Agent", "VB App")
            Using response As System.Net.Http.HttpResponseMessage = client.GetAsync(url).Result
                Dim responseBody As String = response.Content.ReadAsStringAsync().Result
                OutTextBox.Text = responseBody
            End Using
        End Using
    End Sub
End Class

ボタンクリックすると以下の通り、ちゃんと情報をGETできました。

参照

最後まで読んでいただきありがとうございました。

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です