亚洲av成人无遮挡网站在线观看,少妇性bbb搡bbb爽爽爽,亚洲av日韩精品久久久久久,兔费看少妇性l交大片免费,无码少妇一区二区三区

  免費注冊 查看新帖 |

Chinaunix

  平臺 論壇 博客 文庫
最近訪問板塊 發(fā)新帖
查看: 2731 | 回復: 1
打印 上一主題 下一主題

淘寶Open API初學者入門教程 [復制鏈接]

論壇徽章:
0
跳轉(zhuǎn)到指定樓層
1 [收藏(0)] [報告]
發(fā)表于 2011-01-27 19:26 |只看該作者 |倒序瀏覽
淘寶Open API初學者入門教程



淘寶Open API開放將近兩年了,越來越多的人(包括已工作的和在校的大學生)都在使用淘寶的Open API,有不少ISV應用已上架盈利了。本文作為一篇教程,給大家做啟發(fā)式教育。
我也使用淘寶Open API也大半年了。不過了,由于阿里軟件的文檔比較的亂,讓很多初學者分不清頭緒(注:淘寶Open API是開放在阿里軟件的一個平臺上,是什么服務集群平臺吧)。當然了,在中國,能夠?qū)⒆约旱姆⻊召Y源開放出來給第三方使用,特別是淘寶網(wǎng)這種大型商業(yè)網(wǎng)站來說,阿里巴巴的這種分享精神和開放的胸懷還是令人佩服的。因此在使用Open API過程中,我們?nèi)绻X得資料不是很充分,也不要過多的抱怨,開放的同時意味著責任。呵呵!

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

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

http://wiki.isv.alisoft.com/inde ... 0%E5%B9%B3%E5%8F%B0

服務集群平臺就不多嘮叨了,去上面的文檔地址去看看。我就簡要的講講就我所知道的一些值得注意的地方:

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

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

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

4.授權(quán)除了上面所描述的外,授權(quán)還有時效性。就是授權(quán)是有期限的,現(xiàn)在淘寶授權(quán)一次的最大有效時效為一個小時。如果在一個小時內(nèi),沒用調(diào)用任何淘寶Open API,則授權(quán)過期了,需要重新授權(quán)。而對于未上架的應用,授權(quán)時效內(nèi)不管有沒有調(diào)用淘寶Open API,授權(quán)期限過后就需要重新授權(quán)?磥恚霞艿膽眠是有相當大的空間優(yōu)勢。

其他的就不多嘮叨了,還沒有在阿里軟件注冊應用的,還得先去阿里軟件平臺注冊一個應用,注冊成功后,你會得到APP ID及CERT CODE。其中APP ID是用來標記應用,即你注冊應用的ID,CERT CODE則是你應用的密鑰,在做簽名時用。

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

源代碼如下:

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,


* 運行該示例時,你需要將appId,appSecret,tid


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


*


* 在第一次運行時 會提醒你登錄淘寶進行授權(quán),


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


*


* 這只是一個簡單的demo,只是為初學者提供方便


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


*/


public static void main(String[] args) {



// 淘寶Open API平臺即SIP平臺的入口


String sipRequestUrl = "http://sip.alisoft.com/sip/rest";


String appId = "****"; // 在阿里軟件平臺注冊的應用ID,請使用你自己的應用ID


String appSecret = "******"; // 注冊的應用的密鑰,請使用你自己應用的密鑰


String taobaoApiName = "taobao.trade.get"; // 交易類api


String sessionId = "1234567";//sessionId是isv應用自己生成的字符串


//確保每個使用該應用的用戶各自的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", "******"); //請設置你要查詢的交易號


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("打開瀏覽器,訪問下面的URL進行用戶授權(quán),授權(quán)成功后" +


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


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


} else if (result != null)


System.out.println(result);



}



/**


* 請求淘寶Open API服務


* @param url 服務集群平臺入口


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


* @return 請求結(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 = 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;



}



/**


* 對所有參數(shù)進行簽名


* @param secret APP ID對應的密鑰


* @param params 請求中所有的參數(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多行代碼只是向初學者展示如何使用淘寶Open API服務。從代碼也可以看到,基于rest的Open API的確使用起來相當?shù)姆奖恪.斎,要想使用好淘寶Open API,還得好好的閱讀淘寶Open API文檔。同時,還需打開自己的思維,使用淘寶Open API編寫出有創(chuàng)意的應用。早日上架,早日盈利!

如果大家有什么問題,可以回復本貼,有問必答。大家相互探討,共同進步。呵呵!


源自 http://developer.51cto.com    作者  jxgxy  cnblogs

論壇徽章:
0
2 [報告]
發(fā)表于 2011-02-22 11:24 |只看該作者
初學者入門教程蠻不錯的東西啊界面設計
您需要登錄后才可以回帖 登錄 | 注冊

本版積分規(guī)則 發(fā)表回復

  

北京盛拓優(yōu)訊信息技術(shù)有限公司. 版權(quán)所有 京ICP備16024965號-6 北京市公安局海淀分局網(wǎng)監(jiān)中心備案編號:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年舉報專區(qū)
中國互聯(lián)網(wǎng)協(xié)會會員  聯(lián)系我們:huangweiwei@itpub.net
感謝所有關(guān)心和支持過ChinaUnix的朋友們 轉(zhuǎn)載本站內(nèi)容請注明原作者名及出處

清除 Cookies - ChinaUnix - Archiver - WAP - TOP