需求:获取京东商家的订单
环境:java,官方宙斯SDK
1.申请账号注册开发者创建应用参考官方文档注册
注意一点是回调页面url:地址为用户访问应用的地址,当用户访问您的应用时,jos会把相关授权参数通过这个回调地址传给您;这个回调url只是在获取商家授权时需要用到,如果不是后台方法获取的话,填www.baidu.com就好。
2.获取appKey,appSecret,accessToken,下载SDK
感谢前辈提供帮助


在控制台应用管理中,从应用证书中可以找到appKey,appSecret;
点击SDK下载,获得SDK;

在应用基本信息中点击测试;

用商家账号登陆,点击授权后,跳转到百度首页,在地址栏中可看到后面的带参?code=48OtVB,保存起来;
拼接https://oauth.jd.com/oauth/token?grant_type=authorization_code&client_id=你的appkey&redirect_uri=http:www.baidu.com&code=48OtVB&state=1212&client_secret=你的appSecret
用浏览器打开;
{
“access_token”: “xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx”,
“code”: 0,
“expires_in”: 86390,
“refresh_token”: “xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx”,
“time”: “1516248547902”,
“token_type”: “bearer”,
“uid”: “524625331”,
“user_nick”: “jd abcd”
}
注意,测试的accress_token的时效性只有24小时,之后需要重新获取一次
3.后台获取订单
官方java示例:

public JdClient client=new DefaultJdClient(SERVER_URL,accessToken,appKey,appSecret);OrderSearchRequest request=new OrderSearchRequest();request.setStartDate( "jingdong" );
request.setEndDate( "jingdong" );
request.setOrderState( "jingdong" );
request.setPage( "jingdong" );
request.setPageSize( "jingdong" );
request.setOptionalFields( "jingdong" );
request.setSortType( "jingdong" );
request.setDateType( "jingdong" );OrderSearchResponse response=client.execute(request);

项目中引入宙斯SDK后,测试了下,会报错
只有open-api-sdk-2.0会报错java.lang.NoSuchMethodError,还得另外的jar包。
这里就超级坑了,翻遍了官方文档,百度了很久,终于凑齐了jar包
jar下载

最后就是response的解析了,jos使用的是分页查询,注意是把Page理解为页码,官方描述容易误导,说一次最多可查1000个订单,最大PageSize为100,最大Page为50,容易理解为一次查询Page*PageSize个订单,其实是结果以PageSize分页,返回的只有第Page页的订单。

结尾贴一下自己的代码,大神请无视

package com.sat.jos;import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.Calendar;
import java.util.Date;
import java.util.List;import com.jd.open.api.sdk.DefaultJdClient;
import com.jd.open.api.sdk.JdClient;
import com.jd.open.api.sdk.JdException;
import com.jd.open.api.sdk.domain.order.OrderResult;
import com.jd.open.api.sdk.domain.order.OrderSearchInfo;
import com.jd.open.api.sdk.request.order.OrderSearchRequest;
import com.jd.open.api.sdk.response.order.OrderSearchResponse;
import com.sat.entity.Result_Order;
import com.sat.util.PropertiesConfig;
/*** 京东jos调用类* @author VULCAN**/
public class Jos {private String SERVER_URL=PropertiesConfig.readData("josapi.properties", "SERVER_URL");private String accessToken=PropertiesConfig.readData("josapi.properties", "accessToken");private String appKey=PropertiesConfig.readData("josapi.properties", "appKey");private String appSecret=PropertiesConfig.readData("josapi.properties", "appSecret");private String setOrderState=PropertiesConfig.readData("josapi.properties", "setOrderState");private String page=PropertiesConfig.readData("josapi.properties", "page");private String page_size=PropertiesConfig.readData("josapi.properties", "page_size");/*** 发送请求获取响应* @param MySERVER_URL* @param MyaccessToken* @param MyappKey* @param MyappSecret* @param MystarDate* @param MyendDate* @param MysetOrderState* @param Mypage* @param Mypage_size* @return*/public OrderSearchResponse getOrderSearchResponse(String MySERVER_URL,String MyaccessToken,String MyappKey,String MyappSecret,String MystarDate,String MyendDate,String MysetOrderState,String Mypage,String Mypage_size){//创建请求JdClient client=new DefaultJdClient(MySERVER_URL,MyaccessToken,MyappKey,MyappSecret);       OrderSearchRequest request=new OrderSearchRequest();//开始时间request.setStartDate(MystarDate);//结束时间request.setEndDate(MyendDate);//订单状态request.setOrderState(MysetOrderState);//查询的页数request.setPage(Mypage);//每页的条数(最大page_size 100条)request.setPageSize(Mypage_size);try {OrderSearchResponse response=client.execute(request);return response;} catch (JdException e) {e.printStackTrace();}return null;}/*** 根据时间获取未出库订单* @param endDate 结束时间* @param minute 时间间隔分钟* @return*/public Result_Order getOrderByTime(String endDate,int minute){String orderState =setOrderState;return this.getOrderByTime(endDate, minute, orderState);}/*** 根据时间、状态获取订单* @param endDate* @param minute* @return*/public Result_Order getOrderByTime(String endDate,int minute,String orderState){Result_Order result_order=new Result_Order();List<OrderSearchInfo> finalorderlist = new ArrayList<OrderSearchInfo>();//时间处理Calendar cal = Calendar.getInstance();SimpleDateFormat sdf =new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");String starDate="";if(!endDate.equals("")){try {Date end =sdf.parse(endDate);cal.setTime(end);cal.add(Calendar.MINUTE, 0-minute);starDate=sdf.format(cal.getTime());} catch (ParseException e) {e.printStackTrace();}}//封装返回结果OrderSearchResponse response=this.getOrderSearchResponse(SERVER_URL, accessToken, appKey, appSecret, starDate, endDate, orderState, page, page_size);String code = response.getCode();result_order.setCode(code);String zhDesc = response.getZhDesc();result_order.setZhDesc(zhDesc);OrderResult or =response.getOrderInfoResult();int orderTotal = or.getOrderTotal();result_order.setOrderTotal(orderTotal);List<OrderSearchInfo> orderlist = or.getOrderInfoList();finalorderlist.addAll(orderlist);int pagesize = Integer.parseInt(page_size);//每页订单数//多页时多次请求if(orderTotal>pagesize){            int pages =1;//总页数if(orderTotal%pagesize>0){pages =orderTotal/pagesize+1;}else{pages =orderTotal/pagesize;}       for(int newpage=Integer.parseInt(page)+1;newpage<=pages;newpage++){String newpageString =newpage+"";response=this.getOrderSearchResponse(SERVER_URL, accessToken, appKey, appSecret, starDate, endDate, orderState, newpageString, page_size);               or =response.getOrderInfoResult();orderlist = or.getOrderInfoList();finalorderlist.addAll(orderlist);}       }result_order.setOrderlist(finalorderlist);return result_order;}
}

京东jos对接爬坑过程相关推荐

  1. 微信支付返回-1的问题集锦与各种爬坑过程

    之前公司做微信支付的时候,负责这一模块的同事,天天抱怨微信支付的各种坑还有文档的不清晰,最近帮朋友做了一个app,里面就有这一功能,看了一上午文档,瞬间发现我的语文也没学好,各种看不懂就算了,提供的代 ...

  2. Python+Django+Nginx+Uwsgi 详细部署过程(爬坑过程,可以了解各个软件的执行流程,看过)

    这个部署,我真的是爬了好久的坑,才爬出来,所以给大家分享一下,避免入坑. 首先我们先了解一下相关知识: wsgi:   一种实现python解析的通用接口标准/协议,是一种通用的接口标准或者接口协议, ...

  3. Nvidia TX2爬坑过程——1、入手刷机教程

    一.资源简介 TX2作为TX1的改进版,资源配置相当强劲. 1. 模组配置  256 core NVIDIA Pascal GPU.  ARMv8 (64-bit) Multi-Processor ...

  4. Nuxt爬坑系列之vuex

    坑的背景介绍 要用 bootstrap-vue 这个vue的ui框架来重构公司的官网,因为公司官网之前使用bootstrap搭建的,现在想用nuxt框架来重构,恰好bootstrap出了结合vue的版 ...

  5. virtualbox 安装kali linux虚拟机,kali Linux安装virtualbox虚拟机之爬坑经历

    原标题:kali Linux安装virtualbox虚拟机之爬坑经历 很多kali爱好者想把kali linux作为系统使用,但是有些win下的程序有时候也需要用到,此时需要虚拟机. kali系统在安 ...

  6. 阿里云EMAS的爬坑之旅

    EMAS爬坑之路 一.Sophix 二.崩溃分析 1. Application not Set 2. 崩溃日志后台无数据 总结 我将分块讲解不同模块的爬坑之路,对于Sophix我将在一篇单独的博文中进 ...

  7. python闲鱼爬虫_Python 爬虫爬坑路(二)——B站图片,咸鱼的正确 GET 姿势

    前言 昨天在写完 入门级爬虫之后 ,马上就迫不及待的着手开始写 B站的图片爬虫了,真的很喜欢这个破站呢 (〜 ̄△ ̄)〜 这里不涉及到 Python 爬虫的高级技巧,没有使用框架,没有考虑反爬机制,没有 ...

  8. 【京东账户】——Mysql/PHP/Ajax爬坑之用户登录

    [京东账户]--Mysql/PHP/Ajax爬坑之用户登录 一.引言 实现京东的账户项目,功能模块之一,用户登录.要用到的是Apach环境,Mysql.PHP以及Ajax. 二.依据功能创建库.表.记 ...

  9. 【京东账户】——Mysql/PHP/Ajax爬坑之产品列表显示

    [京东账户]--Mysql/PHP/Ajax爬坑之产品列表显示 一.引言 实现京东的账户项目,功能模块之一,产品列表显示.要用到的是Apach环境,Mysql.PHP以及Ajax. 二.依据功能创建库 ...

最新文章

  1. 2022-2028年中国灭火装置行业市场前瞻与投资战略规划分析报告
  2. python 写入网络视频文件很慢_用Python将数据写入LMDB非常慢
  3. 构造函数的初始化,初始化列表还是大括号里好,那种效率高
  4. 机器学习实践:TensorFlow2 多GPU负载不均衡问题
  5. 2019_7_31python
  6. pat乙级相当于什么水平_雅思6分是什么水平?相当于英语几级
  7. (37)FPGA花样流水灯设计(第8天)
  8. 中国天然饮料市场趋势报告、技术动态创新及市场预测
  9. 三星宣布首款 PCIe 5.0 企业级 SSD:PM1743,将于 2022 年推出
  10. matlab fft freqz,【急】请教 fft、freqz、bode 求相频响应的区别及原因
  11. html5画布实现公司印章效果
  12. CCF CSP 201503-1 图像旋转
  13. B站的热门视频要怎么同时批量下载保存到本地电脑中
  14. java 复制excel_利用Java实现复制Excel工作表功能
  15. 【技法操作】UI界面设计,用PS绘制闹钟页面教程
  16. macos系统镜像iso_我们一起来安装----虚拟机安装macOS
  17. 格鲁伯小升初文学常识必考
  18. maya模型切割工具插件 tjh_Cut_Tool 1.2.0 下载及教程
  19. Python 印章代码(附有解析)
  20. autofac 作用域_C#编程之.Net Core 学习之路-AutoFac的使用

热门文章

  1. LibreOffice实现word转pdf
  2. linux SMP启动代码分析
  3. VulnHub-driftinghlues2
  4. PS制作圆角icon
  5. 笔记本电脑如何回复出厂设置呢,有什么相关教程
  6. 制作炫酷AR卡片特效——小技巧
  7. 教师网络计算机研修日志,教师网络研修日志.doc
  8. 模拟停车场管理系统(c++,使用栈和队列)
  9. 西门子医疗2019第四季度表现强劲,营收增长至约41亿欧元
  10. MetaSploit攻击实例讲解------社会工程学set攻击(kali linux 2016.2(rolling))(详细)