自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

淘寶Open API初學(xué)者入門(mén)教程

開(kāi)發(fā) 開(kāi)發(fā)工具
淘寶Open API開(kāi)放將近一年了,越來(lái)越多的人(包括已工作的和在校的大學(xué)生)都在使用淘寶的Open API,有不少I(mǎi)SV應(yīng)用已上架盈利了。本文作為一篇教程,給大家做啟發(fā)式教育。

我也使用淘寶Open API也大半年了。不過(guò)了,由于阿里軟件的文檔比較的亂,讓很多初學(xué)者分不清頭緒(注:淘寶Open API是開(kāi)放在阿里軟件的一個(gè)平臺(tái)上,是什么服務(wù)集群平臺(tái)吧)。當(dāng)然了,在中國(guó),能夠?qū)⒆约旱姆?wù)資源開(kāi)放出來(lái)給第三方使用,特別是淘寶網(wǎng)這種大型商業(yè)網(wǎng)站來(lái)說(shuō),阿里巴巴的這種分享精神和開(kāi)放的胸懷還是令人佩服的。因此在使用Open API過(guò)程中,我們?nèi)绻X(jué)得資料不是很充分,也不要過(guò)多的抱怨,開(kāi)放的同時(shí)意味著責(zé)任。呵呵!

在這了,趁端午節(jié)放假,將我使用淘寶Open API的心得分享出來(lái),先寫(xiě)一篇簡(jiǎn)單的入門(mén)教程,也算是分享和開(kāi)放吧。

通過(guò)閱讀阿里軟件提供的文檔,我們對(duì)如何調(diào)用淘寶Open API有了基本的了解。阿里軟件Open API平臺(tái)即服務(wù)集成平臺(tái)SIP相關(guān)的文檔鏈接如下(在使用SIP平臺(tái)上的Open API還是先要了解下該平臺(tái)的相關(guān)策略如安全策略,訪問(wèn)控制策略等):

http://wiki.isv.alisoft.com/index.php/%E6%9C%8D%E5%8A%A1%E9%9B%86%E6%88%90%E5%B9%B3%E5%8F%B0

服務(wù)集群平臺(tái)就不多嘮叨了,去上面的文檔地址去看看。我就簡(jiǎn)要的講講就我所知道的一些值得注意的地方:

1.淘寶Open API每分鐘訪問(wèn)的次數(shù)是有限制的,好像是400次/分鐘,即一個(gè)應(yīng)用訪問(wèn)任何一個(gè)淘寶API,一分鐘內(nèi)最多只能訪問(wèn)400次;

2.在次數(shù)方面,除了上面的控制外,還有日訪問(wèn)次數(shù)控制。如果你的應(yīng)用是上架的,則日訪問(wèn)量沒(méi)有限制;如果你的應(yīng)用沒(méi)有上架,那么一天之內(nèi),你訪問(wèn)淘寶Open API的次數(shù)累計(jì)起來(lái)不能超過(guò)1000次。不要有意見(jiàn)哦,人家的資源也是有限的,而且還是免費(fèi)的。

3.服務(wù)集成平臺(tái)的api的安全級(jí)別分為四類(lèi):無(wú)安全策略校驗(yàn);簽名校驗(yàn);用戶(hù)授權(quán)校驗(yàn)(包含簽名校驗(yàn));可選用戶(hù)授權(quán)校驗(yàn)(包含簽名校驗(yàn))。淘寶Open API大多都是需要用戶(hù)授權(quán)的。所謂用戶(hù)授權(quán)就是應(yīng)用軟件在操作用戶(hù)的淘寶數(shù)據(jù)時(shí),就需要用戶(hù)授權(quán)。如淘寶賣(mài)家在使用店鋪管理軟件維護(hù)自己的店鋪時(shí),淘寶網(wǎng)就需要淘寶賣(mài)家對(duì)該店鋪軟件進(jìn)行授權(quán),只有授權(quán)了,店鋪管理軟件才能操作淘寶賣(mài)家的數(shù)據(jù)。

4.授權(quán)除了上面所描述的外,授權(quán)還有時(shí)效性。就是授權(quán)是有期限的,現(xiàn)在淘寶授權(quán)一次的***有效時(shí)效為一個(gè)小時(shí)。如果在一個(gè)小時(shí)內(nèi),沒(méi)用調(diào)用任何淘寶Open API,則授權(quán)過(guò)期了,需要重新授權(quán)。而對(duì)于未上架的應(yīng)用,授權(quán)時(shí)效內(nèi)不管有沒(méi)有調(diào)用淘寶Open API,授權(quán)期限過(guò)后就需要重新授權(quán)。看來(lái),上架的應(yīng)用還是有相當(dāng)大的空間優(yōu)勢(shì)。

其他的就不多嘮叨了,還沒(méi)有在阿里軟件注冊(cè)應(yīng)用的,還得先去阿里軟件平臺(tái)注冊(cè)一個(gè)應(yīng)用,注冊(cè)成功后,你會(huì)得到APP ID及CERT CODE。其中APP ID是用來(lái)標(biāo)記應(yīng)用,即你注冊(cè)應(yīng)用的ID,CERT CODE則是你應(yīng)用的密鑰,在做簽名時(shí)用。

下面直接來(lái)個(gè)demo,感受下淘寶的Open API。我們調(diào)用交易類(lèi)的taobao.trade.get為例,該api文檔地址為:http://isp.alisoft.com/apidoc/api/apiIndex.html#isp_taobao-6-281 ??梢灾肋@個(gè)api是用戶(hù)授權(quán),即需要用戶(hù)授權(quán)才可以訪問(wèn)該用戶(hù)的交易信息。

源代碼如下:

package org.openapi.taobao;

import java.security.MessageDigest;

import java.text.SimpleDateFormat;

import java.util.Date;

import java.util.HashMap;

import java.util.Iterator;

import java.util.Map;

import java.util.Set;

import java.util.TreeSet;

import org.apache.commons.httpclient.HttpClient;

import org.apache.commons.httpclient.NameValuePair;

import org.apache.commons.httpclient.methods.PostMethod;

public class TaobaoOpenApiDemo {

 /**

     * 調(diào)用淘寶的taobao.trade.get demo,

     * 運(yùn)行該示例時(shí),你需要將appId,appSecret,tid

     * 這三個(gè)參數(shù)替換為你自己的,就可以運(yùn)行該demo

     *

     * 在***次運(yùn)行時(shí) 會(huì)提醒你登錄淘寶進(jìn)行授權(quán),

     * 授權(quán)成功后 再次運(yùn)行該demo就可以獲取指定交易的信息 呵呵

     *

     * 這只是一個(gè)簡(jiǎn)單的demo,只是為初學(xué)者提供方便

     * 有了這個(gè)原型 大家就可以各顯自己的神通了

     */

    public static void main(String[] args) {

      

       // 淘寶Open API平臺(tái)即SIP平臺(tái)的入口

       String sipRequestUrl = "

       String appId = "****"; // 在阿里軟件平臺(tái)注冊(cè)的應(yīng)用ID,請(qǐng)使用你自己的應(yīng)用ID

       String appSecret = "******"; // 注冊(cè)的應(yīng)用的密鑰,請(qǐng)使用你自己應(yīng)用的密鑰

       String taobaoApiName = "taobao.trade.get"; // 交易類(lèi)api

       String sessionId = "1234567";//sessionId是isv應(yīng)用自己生成的字符串

//確保每個(gè)使用該應(yīng)用的用戶(hù)各自的sessionId各不相同

       SimpleDateFormat formater = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");

 

       Map params = new HashMap();

       params.put("sip_appkey", appId);

       params.put("sip_apiname", taobaoApiName);

       params.put("sip_timestamp", formater.format(new Date()));

       params.put("sip_sessionid", sessionId);

       params.put("fields", "seller_nick,buyer_nick,title,type,created,sid");

       params.put("tid", "******"); //請(qǐng)?jiān)O(shè)置你要查詢(xún)的交易號(hào)

       params.put("format", "xml");

       params.put("v", "1.0");

       params.put("sip_sign", getSign(appSecret, params));

 

       String result = requestOpenApi(sipRequestUrl, params);

       if (result != null && result.startsWith("sip_isp_loginurl:")) {

           result = result.replaceAll("&", "&");

           System.out.println("打開(kāi)瀏覽器,訪問(wèn)下面的URL進(jìn)行用戶(hù)授權(quán),授權(quán)成功后" +

                  ",再次運(yùn)行該類(lèi)就可以調(diào)用api獲取交易信息");

           System.out.println(result.substring("sip_isp_loginurl:".length()));

       } else if (result != null)

           System.out.println(result);

 

    }

 

    /**

     * 請(qǐng)求淘寶Open API服務(wù)

     * @param url 服務(wù)集群平臺(tái)入口

     * @param params 請(qǐng)求參數(shù)

     * @return 請(qǐng)求結(jié)果

     */

    public static String requestOpenApi(String url, Map params) {

       HttpClient client = new HttpClient();

       PostMethod postMethod = new PostMethod(url);

 

       try {

           NameValuePair[] postData = new NameValuePair[params.size()];

 

           Iterator iters = params.keySet().iterator();

           int i = 0;

 

           while (iters.hasNext()) {

              String key = (String) iters.next();

              postData[i] = new NameValuePair(key, params.get(key).toString());

              i++;

           }

 

           postMethod.setRequestBody(postData);

           client.executeMethod(postMethod);

           String resultCode = postMethod.getResponseHeader("sip_status")

                  .getValue();

           if (resultCode == null || ("".equals(resultCode)))

              return null;

           else if ("1004".equals(resultCode))

              return "sip_isp_loginurl:"

                     + postMethod.getResponseHeader("sip_isp_loginurl")

                            .getValue();

           else if (!"9999".equals(resultCode))

              return resultCode

                     + ":"

                     + postMethod.getResponseHeader("sip_errormessage")

                            .getValue();

 

           return postMethod.getResponseBodyAsString();

 

       } catch (Exception ex) {

           ex.printStackTrace();

       } finally {

           if (postMethod != null)

              postMethod.releaseConnection();

       }

 

       return null;

 

    }

 

    /**

     * 對(duì)所有參數(shù)進(jìn)行簽名

     * @param secret APP ID對(duì)應(yīng)的密鑰

     * @param params 請(qǐng)求中所有的參數(shù)

     * @return 簽名

     */

    public static String getSign(String secret, Map params) {

       if (secret == null || "".equals(secret) || params == null)

           throw new RuntimeException(

                  "secret or params is null or blank, please check");

 

       StringBuilder sb = new StringBuilder().append(secret);

       String result = null;

 

       try {

           Set sortedKeys = new TreeSet();

           sortedKeys.addAll(params.keySet());

           for (String key : sortedKeys)

              sb.append(key).append(params.get(key));

 

           MessageDigest md = MessageDigest.getInstance("MD5");

           result = byteTohex(md.digest(sb.toString().getBytes("utf-8")));

 

       } catch (Exception e) {

           throw new RuntimeException(e);

       }

 

       return result;

    }

 

    public static String byteTohex(byte[] b) {

       StringBuffer sb = new StringBuffer();

       String stmp = "";

 

       for (int n = 0; n < b.length; n++) {

           stmp = (java.lang.Integer.toHexString(b[n] & 0XFF));

 

           if (stmp.length() == 1)

              sb.append("0").append(stmp);

           else

              sb.append(stmp);

       }

 

       return sb.toString().toUpperCase();

    }

}

上面短短的100多行代碼只是向初學(xué)者展示如何使用淘寶Open API服務(wù)。從代碼也可以看到,基于rest的Open API的確使用起來(lái)相當(dāng)?shù)姆奖?。?dāng)然,要想使用好淘寶Open API,還得好好的閱讀淘寶Open API文檔。同時(shí),還需打開(kāi)自己的思維,使用淘寶Open API編寫(xiě)出有創(chuàng)意的應(yīng)用。早日上架,早日盈利!

如果大家有什么問(wèn)題,可以回復(fù)本貼,有問(wèn)必答。大家相互探討,共同進(jìn)步。呵呵!

【編輯推薦】

  1. 助推Silverlight 微軟與淘寶合作“閃光店鋪”
  2. SaaS開(kāi)發(fā)入門(mén) 阿里軟件平臺(tái)HelloWorld開(kāi)發(fā)實(shí)例
  3. 微軟Silverlight技術(shù) 閃光淘寶
  4. 阿里軟件投10億全面進(jìn)軍管理軟件市場(chǎng)
  5. SaaS開(kāi)發(fā)入門(mén) 阿里軟件平臺(tái)HelloWorld開(kāi)發(fā)實(shí)例
責(zé)任編輯:彭凡 來(lái)源: cnblogs
相關(guān)推薦

2011-06-27 14:56:46

Qt Designer

2011-08-11 10:50:08

xcode調(diào)試文件

2011-08-24 17:05:01

Lua

2010-06-13 11:13:38

UML初學(xué)者指南

2024-08-20 00:00:08

2020-08-16 13:10:46

TensorFlow深度學(xué)習(xí)數(shù)據(jù)集

2021-08-05 14:40:45

操作系統(tǒng)UNIXLINUX

2018-02-23 10:03:30

Linux命令mkdir

2010-11-24 16:15:09

UI設(shè)計(jì)Windows Pho

2014-03-12 10:11:57

Python設(shè)計(jì)模式

2011-09-16 09:38:19

Emacs

2022-04-24 15:21:01

MarkdownHTML

2011-03-02 12:43:40

vsFTPd

2011-04-12 10:13:24

2024-03-06 09:31:34

SQL數(shù)據(jù)庫(kù)數(shù)據(jù)結(jié)構(gòu)

2018-04-08 14:47:06

Linux命令type

2018-04-24 11:09:13

LinuxShellfc

2018-05-14 08:53:51

Linux命令shuf

2009-11-13 15:46:25

Java多線程

2023-10-14 17:21:53

Scala編程
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號(hào)