各局皆様、こんにちは。アマチュア無線局、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できました。
参照
- REST API のリソース(GitHub)
- HttpClientでデフォルトのユーザーエージェントを設定するにはどうすればよいですか?
- APIの概要とデータの取得
- REST WebAPIを呼び出す
- HttpClient クラス (System.Net.Http) | Microsoft Docs
- HttpClientクラスでWebページを取得するには?[C#、VB]
最後まで読んでいただきありがとうございました。