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