本应用是基于淘宝开放平台(TOP)API以及Google Map JavaScript API开发的一个自用型淘宝买家应用。
实现的功能:
Web构架,展示淘宝用户作为买家,所买到的商品(在地图上展示:商品的收获地址以及商品图片)。
如图:
实现过程:
在浏览器上显示地图 -->
调用TOP API,查询用户的交易记录 -->
返回XML数据 -->
解析XML,得到收货地址、商品图片地址 -->
根据地址获得对应的经纬度-->
调用Google Map API 在地图上弹出消息窗口和图片 --> 完毕。
主要技术:
Java , TOP API,Google Map API, DWR
源码分析:
APITest.java
public class APITest {
protected static String testUrl = "http://gw.api.tbsandbox.com/router/rest";// 沙箱环境调用地址
protected static String Url = "http://gw.api.taobao.com/router/rest";//正式环境调用地址
/**
* 说明:沙箱环境是模拟淘宝网上交易的,开发人员可以在此先测试自己的应用,然后才能申请到正式环境测试
*/
// 申请的测试账号 appkey 及 secret
protected static String myappkey = " ";
protected static String mysecret = " ";
protected static String sandboxSecret = " "; // 沙箱环境测试下的 AppSecret
/**
* 说明:开发者申请开发应用的时候,系统给你的appkey与secret是和你的应用唯一对应的,同时,
* 它会绑定你的淘宝账户(现实环境的账户以及申请的沙箱账户),当需要调用到用户隐私数据的时候,
* 调用的即是所关联的账户的数据。
* 例如本例调用到的monkey823用户即是我在沙箱申请的账户,里面的交易数据是在mini淘宝模拟的。
*/
/**
* 测试 TradesBoughtGet
*
* 调用了top SDK
*
*/
public static String testTradeGet() throws ApiException, ParseException {
// 可以在client 构造函数里 设置返回的数据格式 xml or json
TaobaoClient client = new DefaultTaobaoClient(testUrl, myappkey,
sandboxSecret, Constants.FORMAT_XML);
TradesBoughtGetRequest req = new TradesBoughtGetRequest();
req.setFields("seller_nick,buyer_nick,title,type,create,orders.pic_path,orders.price,orders.num,receiver_city");
Date dateTime = SimpleDateFormat.getDateTimeInstance().parse(
"2011-03-09 05:15:27");
Date dateTime2 = SimpleDateFormat.getDateTimeInstance().parse(
"2011-04-09 23:15:27");
req.setStartCreated(dateTime);
req.setEndCreated(dateTime2);
TradesBoughtGetResponse response = client.execute(req);
System.out.println("------>> " + response.getBody());
return response.getBody();
}
执行这个测试时,返回的XML数据(为方便查看,以树结构形式展示):
test.jsp
<!--引入dwr的js脚本-->
<script src="dwr/interface/APITest.js"></script>
<script src="dwr/engine.js" /></script>
<!-- 下面是谷歌地图API的调用 -->
<script type="text/javascript" src="http://maps.google.com/maps/api/js?sensor=false&language=cn"></script>
<script type="text/javascript">
function initialize() {
//初始化地图界面
var myLatlng = new google.maps.LatLng(37.230,106.083); //中国地图的坐标中心
var myOptions = {
zoom: 4, //缩放级别
center: myLatlng, //设定中心坐标
mapTypeId: google.maps.MapTypeId.ROADMAP //地图样式:卫星,地图
};
var map = new google.maps.Map(document.getElementById("map_canvas"), myOptions);
//获取后台数据, 并实时显示在地图上。
APITest.testTradeGet(callback); //执行top API 生成xml数据, 并绑定 回调方法处理
//回调函数
function callback(response){ //response为执行 APITest.testTradeGet方法返回的值(xml格式的String)
var xmlDoc = loadXMLStr(response);
//获得图片路径 数组
var picturePaths = xmlDoc.getElementsByTagName("pic_path");
//获得所在城市 数组
var citys = xmlDoc.getElementsByTagName("receiver_city");
if(picturePaths[0]!=null){ //如果返回的数据不为空
//根据图片地址 生成自定义图片文件
var image = new google.maps.MarkerImage(
picturePaths[0].text,
new google.maps.Size(80, 60), //缩放后的大小
new google.maps.Point(0, 0), //原始点
new google.maps.Point(40, 0), //锚点
new google.maps.Size(800, 600) //图片原始大小(缩放图片时必须要填写)
); //缩放了大小的图片
var address = citys[0].text;
//var address = "长沙";
codeAddress(address); //解析地址, 并往地图上添加图片
}
//解析地址的函数
function codeAddress(address) {
var ll;
var geocoder = new google.maps.Geocoder();
if (geocoder) {
geocoder.geocode( { 'address': address},getLL);
}
var re = function getLL(results, status) {
if (status == google.maps.GeocoderStatus.OK) {
ll = results[0].geometry.location;
//在所解析的地址处, 添加一个标记(用自定义图片)
var marker = new google.maps.Marker({
map: map,
position: ll,//results[0].geometry.location,
icon: image //自定义的icon
});
//信息窗口选项
var infoOption = {
content: address,
position: ll//results[0].geometry.location
};
//添加 信息窗口
var info = new google.maps.InfoWindow(infoOption);
info.open(map); //显示标注信息窗口
} else {
alert("Geocode was not successful for the following reason: " + status);
}
};
}
}
//加载 xml 格式的字符串
function loadXMLStr(text){ //text为xml格式的String
var xmlDoc;
try //Internet Explorer
{
xmlDoc=new ActiveXObject("Microsoft.XMLDOM");
xmlDoc.async="false";
xmlDoc.loadXML(text);
}
catch(e)
{
try //Firefox, Mozilla, Opera, etc.
{
parser=new DOMParser();
xmlDoc=parser.parseFromString(text,"text/xml");
}
catch(e) {alert(e.message);}
}
return xmlDoc;
}
}
</script>
</head>
<body onload="initialize()">
<!-- 显示地图的div -->
<div id="map_canvas" style="width: 1000px; height: 800px; align:center;"></div>
</body>
</html>
这里省略了web.xml以及dwr.xml两个文件。
当然,dwr的包、 TOP的SDK是不能忘记的。O(∩_∩)O~
好了,希望本文能引起你对于TOP的兴趣,更希望对于刚要着手开发淘宝应用的同志 能够有点帮助。
错误之处,还望不吝赐教。
示例参考:
- 大小: 14 KB
- 大小: 227.1 KB
分享到:
相关推荐
此文档费了很多心血,为开发淘宝ERP精心制作而成,因为淘宝六月份政策变了,开发此类的应用门坎...所以目前没有继续开发了,这份文档适合做淘宝开放平台的朋友使用,如果需要更新的开发文档,可以联系我,可有偿制作。
开发语言C#,工具是VS2010,本例子是原创调用淘宝开放平台API的例子。其中包括项目形式的淘宝JDK(2012.6.28),功能有:取得用户的API(TOP_test),店铺API(Shop_API),类目API(Item_API),交易API(Trade_API)。
本文档描述了如何使用淘宝开放平台进行商务领域的开发,包括操作过程和技术细节。
淘宝开放平台开发指南之熟悉API族, 淘宝作为电子商务市场的超级航母,在电子商务基础服务领域,经过多年的沉淀和革新,围绕电子商务生态链的持续整合,形成了以营销、支付、物流和售后为核心的基础服务体系。...
开发语言C#,工具是VS2010,本例子是原创调用淘宝开放平台API的例子。其中包括项目形式的淘宝JDK(2012.6.28),功能有:取得用户的API(TOP_test),店铺API(Shop_API),类目API(Item_API),交易API(Trade_API)。
淘宝开放平台API接口 JAVA版,供有兴趣的开发者
中国电信物联网开放平台API参考|
京东开放平台api,包括在线文档,接口说明,调用方式
中国电信物联网开放平台API19.0参考.pdf
云丁智能SaaS开放平台API文档(V3.0.11).pdf
淘宝开放平台SDK提供了API的请求封装、摘要签名、响应解释、消息监听等功能,使用SDK可以轻松完成API的调用、API结果的获取、消息的实时监听。 二、环境依赖 1)JAVA SDK 需要依赖 Java SE/EE 1.5及以上; 2)...
.net 封装的校内 开放平台api,包括开源代码 ,可以直接使用
比亚迪智慧开放平台API说明书V1.0.5.pdf
LBS开放平台API控制台申请配置指南 网络技术
淘宝开发, 淘宝开放平台TOP API,SDK。
由于朋友erp系统是delphi开发 需要同步调用农银e管家开放平台数据,该API DEMO提供的是C#库,所以做了个简单封装 不敢独享 前来混点积分。 首先封装农银e管家开放平台API为COM组件 然后delphi调用
这个用淘宝开放平台API写的一个简单客户端示例.用C#语言编写.有兴趣的可以下载看看.