很久沒有繼續跟進淘寶的API使用了,有不少作相關應用的同行都來諮詢,不少都由於本身開發工做比較忙而沒有來得及好的處理,前幾天,有一個朋友叫幫忙指導如何使用淘寶API,因爲原來有一些成熟的例子應用,所以原覺得直接運行或者稍微修改一下便可,所以沒有太多的注意。html
但是,發現淘寶的API應用變化已經很大了,離我最後一篇淘寶API例子的隨筆《淘寶API開發系列---淘寶API的測試及使用2 》有一年多的時間了,所以從新到http://api.taobao.com/myresources/standardSdk.htm裏面下載最新的SDK進行更新調整,但是裏面不少接口已經有所變化,有些已經在客戶端SDK裏面再也不支持。api
首先咱們須要申請一個應用session
特別的是,如今的淘寶API客戶端應用,也只有公司帳號才能使用,普通的淘寶用戶只能使用Web應用方式,貌似若是不是選擇客戶端應用,那麼使用Winform程序,將不能正確獲取相關的API信息。我使用公司帳號調整一個應用爲客戶端應用。app
我在我原來例子的基礎上,根據最新的SDK進行了修改,有些如不須要SessionKey獲取用戶信息的接口已經不能使用了,例如客戶的買入的訂單記錄也不能使用了,並且新增了不少相關的接口內容。函數
爲了更好對API的使用,咱們須要使用淘寶API的測試工具進行測試相關的接口,以下界面所示。工具
對於須要獲取用戶私密信息,如店鋪及交易等重要信息,還須要獲取用戶的SessionKey的,咱們能夠經過下面接口函數,彈出登陸窗口,而後登陸後,定位到對應的App應用頁面,而後頁面加載的時候,獲取到對應的SessionKey。post
經過上面兩個對話框的登陸和確認操做,獲取到TOP受權碼,並根據規則得到SessionKey了,這樣一些重要數據就能夠經過獲取其中的SessionKey進行獲取了。測試
首先咱們來看看幾個功能模塊的界面效果和操做代碼。this
1)獲取登陸用戶的信息url
主要代碼以下所示:
if (string.IsNullOrEmpty(sessionKey)) { sessionKey = GetAuthorizeCode(this.appkey); } //用戶的信息 Console.WriteLine("用戶的信息"); UserSellerGetRequest req = new UserSellerGetRequest(); //實例化具體API對應的Request類 req.Fields = "user_id,nick,created,buyer_credit,type,sex"; UserSellerGetResponse rsp = myclient.Execute(req, sessionKey);//執行API請求並將該類轉換爲response對象 Console.WriteLine(rsp.Body); if (rsp.User != null) { //Console.WriteLine(rsp.User.Nick); //Console.WriteLine(ObjectToString(rsp.User)); List<User> list = new List<User>(); list.Add(rsp.User); this.winGridView1.DisplayColumns = req.Fields.Replace("_", "");//對應字段的屬性沒有「_」字符的 this.winGridView1.DataSource = list; }
2)獲取單獨商品信息
獲取單獨的產品信息不須要SessionKey,具體代碼以下所示。
//單獨商品的信息 Console.WriteLine("單獨商品的信息"); ItemGetRequest req = new ItemGetRequest(); req.Fields = "num_iid,title,nick,pic_path,cid,price,type,location.city,delist_time,post_fee"; req.NumIid = 10838073156L;//3838293428L; ItemGetResponse itemRsp = myclient.Execute(req); if (itemRsp != null && itemRsp.Item != null) { List<Item> list = new List<Item>(); list.Add(itemRsp.Item); this.winGridView1.DisplayColumns = req.Fields.Replace("_", "");//對應字段的屬性沒有「_」字符的 this.winGridView1.DataSource = list; }
3)獲取店鋪商品列表
開發淘寶應用,不少時候,用於本公司的ERP或者產品管理系統與淘寶店鋪的數據同步,所以須要獲取本身商店的一些商品數據,而後進行修改更新等操做。獲取商品信息主要代碼以下所示。
if (string.IsNullOrEmpty(sessionKey)) { sessionKey = GetAuthorizeCode(this.appkey); } //查詢店鋪商品信息 Console.WriteLine("查詢店鋪商品信息"); ItemsOnsaleGetRequest req = new ItemsOnsaleGetRequest(); req.Fields = "approve_status,num_iid,title,nick,type,cid,pic_url,num,props,valid_thru,list_time,price,has_discount,has_invoice,has_warranty,has_showcase,modified,delist_time,postage_id,seller_cids,outer_id"; req.PageNo = 1; req.PageSize = 40; //顯示列表信息 ItemsOnsaleGetResponse itemRsp = myclient.Execute(req, sessionKey); if (itemRsp != null) { this.winGridView1.DisplayColumns = req.Fields.Replace("_", "");//對應字段的屬性沒有「_」字符的 this.winGridView1.DataSource = itemRsp.Items; }
4)獲取店鋪賣出交易信息
店鋪的賣出交易信息獲取的代碼以下所示。
if (string.IsNullOrEmpty(sessionKey)) { sessionKey = GetAuthorizeCode(appkey); } //賣出交易 Console.WriteLine("賣出交易"); TradesSoldGetRequest req = new TradesSoldGetRequest(); req.Fields = "tid,title,price,type,num_iid,seller_nick,buyer_nick,status,receiver_state,receiver_city,receiver_district,receiver_address"; req.PageNo = 1L; req.PageSize = 40L; TradesSoldGetResponse soldRsp = myclient.Execute(req, sessionKey); if (soldRsp != null) { this.winGridView1.DisplayColumns = req.Fields.Replace("_", "");//對應字段的屬性沒有「_」字符的 this.winGridView1.DataSource = soldRsp.Trades; }
以上就是一些基礎淘寶API的使用說明,固然,完善的淘寶應用系統客戶,可能須要作更多的東西,如商品信息同步、庫存同步、自動評價、自動發貨等操做,不過基本的操做思路是很接近的,只須要進一步查找淘寶API的使用說明,以及一些經驗代碼便可。