現在のバケットの一覧を取得
バケットの一覧を取得するにはDataManagementAPIのGET Bucketを使います。前回のプロジェクトを利用して、WebFormでバケットの一覧を取得してみます。WebFormの追加
WebFormを追加して、下の図のようにサーバーコントロールを配置します。サンプルのWebForm |
サンプルコード
以下はバケットの一覧を取得するサンプルコードです。ポイントは「apiの戻り値のJSONの配列を処理する部分です。レスポンスをNewtonsoft.Json.Linq.JArray型に変換して情報を取り出します。
Public Class WebForm3
Inherits System.Web.UI.Page
Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load
'**********************************
' アクセストークンを取得
'**********************************
'この部分は前回の記事を参照してください。
Dim acToken As String = mdlUtils.GetToken("bucket:read")
If acToken = "" Then
Exit Sub
End If
'**********************************
' バケットを取得
'**********************************
'RestSharpでクライアントを作成
Dim url As String = "https://developer.api.autodesk.com"
Dim _client As New RestSharp.RestClient(url)
'RestSharpでリクエストを作成
Dim authReq As New RestSharp.RestRequest()
With authReq
.Resource = "oss/v2/buckets"
'メソッド
.Method = RestSharp.Method.GET
'ヘッダー
.AddHeader("Authorization", "Bearer " + acToken)
End With
'送信
'POSTする
Dim result As RestSharp.IRestResponse = _client.Execute(authReq)
If result.StatusCode = Net.HttpStatusCode.OK Then
'200OKの場合
Dim responseString As String = result.Content
'Newtonsont.JsonのJSON解読メソッドを使うと便利
'まず以下の構文でオブジェクトを作成します。
Dim jsonObj As Object = Newtonsoft.Json.JsonConvert.DeserializeObject(responseString)
'"items"を取得しjArrayオブジェクトとする
Dim itemArray As Newtonsoft.Json.Linq.JArray = jsonObj("items")
'配列を走査する
For Each item As Newtonsoft.Json.Linq.JObject In itemArray
'バケットキー
Dim strBucketKey As String = item("bucketKey")
'作成した日付(ミリセカンド)
Dim strCreatedDate As String = item("createdDate")
'ポリシーキー
Dim strPolicyKey As String = item("policyKey")
'タイムスタンプから日付へ変換
Dim intTimeStamp As Int64 = Int64.Parse(strCreatedDate)
Dim dtCreateDate As DateTimeOffset = DateTimeOffset.FromUnixTimeMilliseconds(intTimeStamp)
'リストボックスのアイテムを追加する
lbxBuckets.Items.Add(New ListItem(strBucketKey + " / 作成日時 : " + dtCreateDate.ToLocalTime.ToString + " / ポリシーキー : " + strPolicyKey, strBucketKey))
Next
lblStatus.Text = itemArray.Count.ToString + "個のバケットが見つかりました。"
Else
Dim responseString As String = result.Content
Dim jsonObj As Object = Newtonsoft.Json.JsonConvert.DeserializeObject(responseString)
lblStatus.Text = "取得に失敗しました。" + vbTab + jsonObj("reason")
End If
End Sub
End Class
実行する
実行すると以下のようになります。現在のバケットの一覧 |