c语言sscanf函数的用法是什么
245
2023-05-26
我也使用淘宝Open API也大半年了。不过了,由于阿里软件的文档比较的乱,让很多初学者分不清头绪(注:淘宝Open API是开放在阿里软件的一个平台上,是什么服务集群平台吧)。当然了,在中国,能够将自己的服务资源开放出来给第三方使用,特别是淘宝网这种大型商业网站来说,阿里巴巴的这种分享精神和开放的胸怀还是令人佩服的。因此在使用Open API过程中,我们如果觉得资料不是很充分,也不要过多的抱怨,开放的同时意味着责任。呵呵!
在这了,趁端午节放假,将我使用淘宝Open API的心得分享出来,先写一篇简单的入门教程,也算是分享和开放吧。
通过阅读阿里软件提供的文档,我们对如何调用淘宝Open API有了基本的了解。阿里软件Open API平台即服务集成平台SIP相关的文档链接如下(在使用SIP平台上的Open API还是先要了解下该平台的相关策略如安全策略,访问控制策略等):
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
服务集群平台就不多唠叨了,去上面的文档地址去看看。我就简要的讲讲就我所知道的一些值得注意的地方:
1.淘宝Open API每分钟访问的次数是有限制的,好像是400次/分钟,即一个应用访问任何一个淘宝API,一分钟内最多只能访问400次;
2.在次数方面,除了上面的控制外,还有日访问次数控制。如果你的应用是上架的,则日访问量没有限制;如果你的应用没有上架,那么一天之内,你访问淘宝Open API的次数累计起来不能超过1000次。不要有意见哦,人家的资源也是有限的,而且还是免费的。
3.服务集成平台的api的安全级别分为四类:无安全策略校验;签名校验;用户授权校验(包含签名校验);可选用户授权校验(包含签名校验)。淘宝Open API大多都是需要用户授权的。所谓用户授权就是应用软件在操作用户的淘宝数据时,就需要用户授权。如淘宝卖家在使用店铺管理软件维护自己的店铺时,淘宝网就需要淘宝卖家对该店铺软件进行授权,只有授权了,店铺管理软件才能操作淘宝卖家的数据。
4.授权除了上面所描述的外,授权还有时效性。就是授权是有期限的,现在淘宝授权一次的***有效时效为一个小时。如果在一个小时内,没用调用任何淘宝Open API,则授权过期了,需要重新授权。而对于未上架的应用,授权时效内不管有没有调用淘宝Open API,授权期限过后就需要重新授权。看来,上架的应用还是有相当大的空间优势。
其他的就不多唠叨了,还没有在阿里软件注册应用的,还得先去阿里软件平台注册一个应用,注册成功后,你会得到APP ID及CERT CODE。其中APP ID是用来标记应用,即你注册应用的ID,CERT CODE则是你应用的密钥,在做签名时用。
下面直接来个demo,感受下淘宝的Open API。我们调用交易类的taobao.trade.get为例,该api文档地址为:http://isp.alisoft.com/apidoc/api/apiIndex.html#isp_taobao-6-281 。可以知道这个api是用户授权,即需要用户授权才可以访问该用户的交易信息。
源代码如下:
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 {
/**
* 调用淘宝的taobao.trade.get demo,
* 运行该示例时,你需要将appId,appSecret,tid
* 这三个参数替换为你自己的,就可以运行该demo
*
* 在***次运行时 会提醒你登录淘宝进行授权,
* 授权成功后 再次运行该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进行用户授权,授权成功后" +
",再次运行该类就可以调用api获取交易信息");
System.out.println(result.substring("sip_isp_loginurl:".length()));
} else if (result != null)
System.out.println(result);
}
/**
* 请求淘宝Open API服务
* @param url 服务集群平台入口
* @param params 请求参数
* @return 请求结果
*/
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;
}
/**
* 对所有参数进行签名
* @param secret APP ID对应的密钥
* @param params 请求中所有的参数
* @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();
}
}
1.2.3.4.5.6.7.8.9.10.11.12.13.14.15.16.17.18.19.20.21.22.23.24.25.26.27.28.29.30.31.32.33.34.35.36.37.38.39.40.41.42.43.44.45.46.47.48.49.50.51.52.53.54.55.56.57.58.59.60.61.62.63.64.65.66.67.68.69.70.71.72.73.74.75.76.77.78.79.80.81.82.83.84.85.86.87.88.89.90.91.92.93.94.95.96.97.98.99.100.101.102.103.104.105.106.107.108.109.110.111.112.113.114.115.116.117.118.119.120.121.122.123.124.125.126.127.128.129.130.131.132.133.134.135.136.137.138.139.140.141.142.143.144.145.146.147.148.149.150.151.152.153.154.155.156.157.158.159.160.161.162.163.164.165.166.167.168.169.170.171.172.173.174.175.176.177.178.179.180.181.182.183.184.185.186.187.188.189.190.191.192.193.194.195.196.197.198.199.200.201.202.203.204.205.206.207.208.209.210.211.212.213.214.215.216.217.218.219.220.221.222.223.224.225.226.227.228.229.230.231.232.233.234.235.236.237.238.239.240.241.242.243.244.245.246.247.248.249.250.251.252.253.254.255.256.257.258.259.260.261.262.263.264.265.266.267.268.269.270.271.272.273.274.275.276.277.278.279.280.281.282.283.284.285.286.287.288.289.290.291.292.293.294.295.296.297.298.299.300.301.302.303.304.305.306.307.308.309.310.311.312.313.314.315.316.317.318.319.320.321.322.323.324.325.326.327.328.329.330.331.332.333.334.335.336.337.338.339.340.341.342.343.344.345.346.347.348.349.350.351.352.353.354.355.356.357.358.359.360.361.362.363.364.365.366.367.368.369.370.371.372.373.374.375.376.377.378.379.380.381.382.383.384.385.386.387.388.389.390.391.392.393.394.395.396.397.398.399.400.401.402.403.404.405.406.407.408.409.410.411.412.413.414.415.416.417.418.419.420.421.422.423.424.425.426.427.428.429.430.431.432.433.434.435.436.437.438.439.440.441.442.443.444.445.446.447.448.449.450.451.452.453.454.455.456.457.458.459.460.461.462.463.464.465.466.467.468.469.470.471.472.473.474.475.476.477.478.479.480.481.482.483.484.485.486.487.488.489.490.491.492.493.494.495.496.497.498.499.500.501.502.503.504.505.506.507.508.509.510.511.512.513.514.515.516.517.518.519.520.521.522.523.524.525.526.527.528.529.530.531.532.533.534.535.536.537.538.539.540.541.542.543.544.545.546.547.548.549.550.551.552.553.554.555.556.557.558.559.560.561.562.563.564.565.566.567.568.569.570.571.572.573.574.575.576.577.578.579.580.581.582.583.584.585.586.587.588.589.590.591.592.593.594.595.596.597.598.599.600.601.602.603.604.605.606.607.608.609.610.611.612.613.614.615.616.617.618.619.620.621.622.623.624.625.626.627.628.629.630.631.632.633.634.635.636.637.638.639.640.641.642.643.644.645.646.647.648.649.650.651.652.653.654.655.656.657.658.659.660.661.662.663.664.665.666.667.668.669.670.671.672.673.674.675.676.677.678.679.680.681.682.683.684.685.686.687.688.689.690.691.692.693.694.695.696.697.698.699.700.701.702.703.704.705.706.707.708.709.710.711.712.713.714.715.716.717.718.719.720.721.722.723.724.725.726.727.728.729.730.731.732.733.734.735.736.737.738.739.740.741.742.743.744.745.746.747.748.749.750.751.752.753.754.755.756.757.758.759.760.761.762.763.764.765.766.上面短短的100多行代码只是向初学者展示如何使用淘宝Open API服务。从代码也可以看到,基于rest的Open API的确使用起来相当的方便。当然,要想使用好淘宝Open API,还得好好的阅读淘宝Open API文档。同时,还需打开自己的思维,使用淘宝Open API编写出有创意的应用。早日上架,早日盈利!
如果大家有什么问题,可以回复本贴,有问必答。大家相互探讨,共同进步。呵呵!
【编辑推荐】
助推Silverlight 微软与淘宝合作“闪光店铺” SaaS开发入门 阿里软件平台HelloWorld开发实例 微软Silverlight技术 闪光淘宝 阿里软件投10亿全面进军管理软件市场 SaaS开发入门 阿里软件平台HelloWorld开发实例版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。
发表评论
暂时没有评论,来抢沙发吧~