Q ans A に次のような質問がありました.
[YahooAPI(ショップ)の画像アップロードについて]
http://hpcgi3.nifty.com/e-papy/DelphiBBS/wwwlng.cgi?print+201507/15070004.txt
この質問の Web API の記事は以下にあります.
[ショッピング:商品画像アップロードAPI - Yahoo!デベロッパーネットワーク]
http://developer.yahoo.co.jp/webapi/shopping/uploadItemImage.html
Indy の TIdHTTP コンポを使用して,URL でリクエストを送信するものとします.
上の記事の 「サンプルリクエストURL」 を使用することになります.
Yahoo! の Web API の記事によると,パラメータは以下の 2 つになっています.
seller_id
file
上の Yahoo! の記事によると https です.以下を参考にしてください.
[772] [07_HTTPS サーバへのアクセス]
http://mrxray.on.coocan.jp/Delphi/plSamples/772_Indy_HTTPGet.htm#07
URL 文字列で送る場合,「リクエストURL + パラメータ」とします.
パラメータの先頭は ? (クエスチョンマーク) です.パラメータは & (アンパサンド) でつなげます.
上の記事の 「サンプルリクエストURL」の URL では,file がないので,
https://circus.shopping.yahooapis.jp/ShoppingWebService/V1/uploadItemImage?seller_id=teststore&file=hogehoge.jpg
となるでしょう.teststore は実際のストアアカウントの値にします (ストアアカウントはあらかじめ取得しておきます).
HogeHoge の部分は,商品コードか商品コード_(1-5)にするようです.
Yahoo! の記事にも書いてありますが,日本語を含む場合はエンコードが必要ですが,今回は日本語を使用する必要はないでしょう.
パス区切り文字に円記号は使えません.使うとすれは DosPathToUnixPath 関数での変換が必要です.EXE と同じフォルダにファイルを置くといいかも知れません.
POST か GET して TMemoryStream で受け取ります.
(Yahoo! のseller_id のところに赤字で GET と書いてあるので GET かも知れませんが,POST というサンプルリクエストもあるので,どちらかは分かりません.別のページには GET でも… という記述もあるようですが)
受け取ったメモリストリームの中身は,XML コードです.これを解析します.
以下を参考にしてください.
最初の XML テータバインディングが少し面倒ですが,上の Yahoo! のページにひな形があるようです.
多分そのまま使用できると思います.
Yahoo! のページのコードをコピペして,UTF-8 で保存してバインディングして,pas コードを生成します.
バインディングしなくても,XML コードを解析すれば結果は取得できます.
[920] [03_XML データバインディングの手順]
http://mrxray.on.coocan.jp/Delphi/plSamples/920_WebAPI_XML-RPC.htm#03
[921_WebAPI_REST による郵便番号と住所検索]
http://mrxray.on.coocan.jp/Delphi/plSamples/921_WebAPI_REST_Postal.htm
(上の 2 つの記事は,少し難解です.書き直そうと思って,そのままですので,あしからず)
今回は画像のアップということなので,XML の解析は必要ないかも知れませんが.
XML の解析にもいろいろ方法があります.以下は XPATH を使用した簡単な例です.
[314] [04_アプリケーションマニフェストコードの自動編集 - XML の操作例]
http://mrxray.on.coocan.jp/Delphi/plSamples/314_CreateAppManifest.htm#04
【注意】
アプリケーションマニフェストを作成するのに,上記のようなことをする必要はありません.
ネットにあるコードをコピペすれば済みます.
|