一. Sdk环境.
1.1 android sdk要求:
1.6及其以上版本
1.2 demo sdk要求:
最低sdk版本2.2,推荐SDK 版本3.0,3.2
1.3 SDK版本:
移动android sdk1.0
二.底层调用
底层调用服务端接口和jos2.0 api开放平台接口统一。相比较jos2.0接口,androidsdk1.0更加轻量级,非常适用于手机应用的敏捷开发。所有api调用前需要设置系统参数和应用参数两部分参数。所有api需要的系统参数都是统一的:
名称 | 类型 | 是否必须 | 描述 |
method | String | 是 | API接口名称 |
app_key | String | 是 | JOS分配给应用的AppKey |
sign | String | 是 | API输入参数签名结果 |
timestamp | String | 是 | 时间戳 |
format | String | 否 | 响应格式,目前仅支持json |
v | String | 是 | API,取 2.0. |
其中, method,format,v都是sdk中已经封装好了的系统参数,timestamp现场生产,sign是根据app_key进行MD5签名生成而来,因此上述参数都无需开发者关心。开发者需要传入的参数是app_key另外,根据自己应用的情况来设置connectTimeout和readTimeout的值;推荐connectTimeout =30000,readTimeout=20000
三. sdk接口详述
四.调用方式
首先需要四个参数(Url,Appkey,connectTimeOut,readTimeOut)构造一个DefaultJdMobileClient对象,然后根据自己的需求新建相应的Requsest对象并设置应用参数,最后得到解析后的Response,通过Response相对应的get方法获得对应的实体或实体列表对象。示例如下:(注: 所有的请求都在当前线程中完成,请不要在UI线程中直接发起以下请求,需要新建一个子线程去完成,具体操作可参考demo示例代码。)
CategorySearchRequest request = new CategorySearchRequest();
DefaultJdMobileClient client= new DefaultJdMobileClient(url, appkey, connectTimeOut,readTimeOut);
request.setCid(cid);
request.setLevel(level);
try {
CategorySearchResponse response = defaultClient.execute(request);
List
} catch (JdException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
2.360buy.ware.get.attribute
DefaultJdMobileClient defaultClient= new DefaultJdMobileClient(url, appkey, connectTimeOut,readTimeOut);
CategoryAttributeSearchRequest request = new CategoryAttributeSearchRequest();
request.setCid(cid);
try {
CategoryAttributeSearchResponse response = defaultClient.execute(request);
List
} catch (JdException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
3.360buy.ware.get.attvalue
WareSearchRequest request = new WareSearchRequest();
request.setQ(title);
request.setPage(fromWhichPage);
request.setPageSize(categoryCount);
WareSearchResponse response = null;
try {
response= defaultClient.execute(request);
} catch (JdException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
List
4. 360buy.ware.get
WareAnotherBuyRecommendRequest request = new WareAnotherBuyRecommendRequest();
request.setWareId(value);
try {
WareAnotherBuyRecommendResponse response = defaultClient.execute(request);
} catch (JdException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
List
5.360buy.wares.list.get
public List
RegionInfoGetRequest request = new RegionInfoGetRequest();
RegionInfoGetResponse response = null;
try {
}catch(JdException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
System.out.println("response"+response);
if(response == null||!response.getCode().equals("0"))
{
return null;
}
List
return regions;
}
五.移动开放平台Jd-Android-sdk-1.0相对于pc开放平台jos的区别:
5.1.更加轻量级。
相对于pc开放平台的大量接口而言,目前移动平台仅开放了手机客户端业务需求最迫切的分类,属性,商品,搜索等;同时,手机客户端不再借助第三方的工具类jar包,将jar包的容量控制到最小。即能充分满足手机开发的需求,又将手机敏捷开发的特点发挥得很好。
5.2.更高的安全性。
Pc开放平台涉及较少的安全性问题,但是移动端开放平台面临更多的安全隐患。比如:移动端应用如果需要用户输入账号密码授权,会涉及到用户信息的泄漏;移动端如果在代码中静态引用用户应的appkey和appsecret,很有可能会被其他人通过反编译得到些信息,这是相当危险的。所以移动开发者直接利用jos api来开发自己的移动应用时十分危险的,sdk1.0版中目前尚未涉及授权应用和用户信息输入,只需要用appkey就可以访问得到数据,暂时没有安全性问题。
5.3.返回的数据进行了Android层面的再次封装。
比如把类目(Category)的返回结果封装到了linearlayout当中;把三级类目的属性显示放到一个popupwindow,把地域信息封装到一个listview当中等。相关代码都在demo中可以找到,开发者可以选择适合自己应用的一种进行参考和改良,当然也可以不使用这层封装,直接在得到相关数据模型对象后自定义开发。