VB.netでヤフーショッピングのストアカテゴリ一覧APIを使う方法


VB.netでヤフーショッピングのストアカテゴリ編集APIを使う方法で、アプリケーションからカテゴリを追加できるようになりました。
しかし、ストアカテゴリ編集APIで、カテゴリを新規追加した場合、自動で割り振られたカテゴリのページキーはレスポンスに含まれていないという謎の仕様です。

仕方ないので、ヤフーショッピングのストアカテゴリ一覧APIを使って、カテゴリ一覧を取得して、その中から、該当するカテゴリのページキーを見つけることにしました。

VB.netでヤフーショッピングのストアカテゴリ一覧APIを使う方法

ストアカテゴリ一覧APIの仕様はこちらです。

    Dim sURL As String  
    Dim objEnc As System.Text.Encoding = System.Text.Encoding.UTF8  
    Dim objWC As System.Net.WebClient  
    Dim byResult As Byte()  
    Dim sRtn As String

sURL = “https://circus.shopping.yahooapis.jp/ShoppingWebService/V1/stCategoryList

Dim objPostData As New System.Collections.Specialized.NameValueCollection
objPostData.Add(“seller_id”, “[ストアアカウント]“)
objPostData.Add(“page_key”, “[親カテゴリのページキー]“)
objPostData.Add(“access_token”, “[アクセストークン]”)

Try

objWC = New System.Net.WebClient()
‘PUTで送信します。
byResult = objWC.UploadValues(sURL, “POST”, objPostData)
‘結果はXML形式で渡されます。
sRtn = System.Text.Encoding.UTF8.GetString(byResult)
Catch ex As WebException

Dim objEncError As Encoding = Encoding.UTF8
Dim resError As WebResponse = ex.Response
Dim resStreamError As Stream = resError.GetResponseStream()
Dim srError As StreamReader = New StreamReader(resStreamError, objEncError)
‘エラーが発生した場合のレスポンス
Dim htmlError As String = srError.ReadToEnd()
srError.Close()
resStreamError.Close()

End Try

親カテゴリのページキーを指定しない場合は、第1階層を取得するので、階層構造になっている場合は、全カテゴリを取得するためにループする必要があります。

ページキー、カテゴリ名、更新日時がわかるので、新規登録したカテゴリのページキーを見つけ出すために、時間である程度絞り込むことができますが、毎回、全カテゴリをチェックして確認するなんて、ちょっと非効率で嫌だなって思いました。
良い方法が見つかったら、追記したいと思います。