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階層を取得するので、階層構造になっている場合は、全カテゴリを取得するためにループする必要があります。
ページキー、カテゴリ名、更新日時がわかるので、新規登録したカテゴリのページキーを見つけ出すために、時間である程度絞り込むことができますが、毎回、全カテゴリをチェックして確認するなんて、ちょっと非効率で嫌だなって思いました。
良い方法が見つかったら、追記したいと思います。