サイトアイコン アマチュア無線局JS2IIU

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

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

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

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できました。

参照

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

モバイルバージョンを終了