首页/新闻资讯/正文详情

Java 调用京东商品详情接口全攻略(2026 版)

发布时间:2026/9/24 22:15:47 来源:云帆数科 栏目:资讯中心
Java 调用京东商品详情接口全攻略(2026 版)
在电商数据对接、比价工具、选品分析等场景中获取京东商品详情是最常见的需求。本文基于 2026 年京东开放平台的最新规则系统讲解Java 调用京东商品详情接口的完整流程从接口选型、签名鉴权、完整代码实现到高频避坑。一、先分清两套 API选对方向京东商品详情接口分为两大体系调用前先判断自己属于哪类用户对比项京东联盟 API宙斯 JOS 商家 API面向人群个人、CPS 推广者、比价工具有自有京东店铺的商家/ERP 服务商核心接口jd.union.open.goods.detail.queryjingdong.item.read.get数据特点含佣金、优惠券、券后价数据最全真实库存、售后、内部价门槛个人实名认证即可企业认证 店铺授权限制未参加联盟的商品查不到只能查自己店铺的商品统一调用网关https://api.jd.com/routerjsonPOST如果你没有京东店铺只想做比价、选品、导购直接选京东联盟 API即可。二、接入准备注册与认证在京东联盟官网注册媒体账号完成个人实名认证。创建应用进入「开发者管理」创建应用获取AppKey和AppSecret密钥务必存服务器禁止暴露到前端。申请权限申请商品详情 API 权限填写用途比价/选品/导购一般当天审核通过。三、签名机制90% 的调用失败都源于签名错误签名流程将所有请求参数除 sign 本身按ASCII 升序排序拼接成key1value1key2value2...再使用 AppSecret 做HMAC-SHA256加密并转大写。常见错误码速查401签名错误、403权限不足、10003限流、1004AppKey 无效。四、Maven 依赖dependency groupIdorg.apache.httpcomponents/groupId artifactIdhttpclient/artifactId version4.5.14/version /dependency dependency groupIdcom.alibaba/groupId artifactIdfastjson/artifactId version2.0.53/version /dependency五、Java 完整实现5.1 签名工具类package com.example.jdapi.util; import javax.crypto.Mac; import javax.crypto.spec.SecretKeySpec; import java.util.Map; import java.util.TreeMap; public class JdSignUtil { /** * 京东联盟签名参数 ASCII 升序拼接 HmacSHA256 转大写 */ public static String sign(MapString, String params, String appSecret) throws Exception { // TreeMap 天然按 key 字典序ASCII排序 MapString, String sorted new TreeMap(params); StringBuilder raw new StringBuilder(); for (Map.EntryString, String entry : sorted.entrySet()) { String key entry.getKey(); String value entry.getValue(); // 跳过空值与 sign 本身 if (key.equals(sign) || value null || value.isEmpty()) { continue; } raw.append(key).append(value); } Mac mac Mac.getInstance(HmacSHA256); mac.init(new SecretKeySpec(appSecret.getBytes(UTF-8), HmacSHA256)); byte[] digest mac.doFinal(raw.toString().getBytes(UTF-8)); StringBuilder sb new StringBuilder(); for (byte b : digest) { sb.append(String.format(%02x, b)); } return sb.toString().toUpperCase(); } }5.2 商品详情 API 客户端package com.example.jdapi.client; import com.alibaba.fastjson.JSON; import com.alibaba.fastjson.JSONObject; import com.example.jdapi.util.JdSignUtil; import org.apache.http.client.methods.CloseableHttpResponse; import org.apache.http.client.methods.HttpPost; import org.apache.http.entity.StringEntity; import org.apache.http.impl.client.CloseableHttpClient; import org.apache.http.impl.client.HttpClients; import org.apache.http.util.EntityUtils; import java.util.HashMap; import java.util.Map; public class JdGoodsApiClient { private static final String API_URL https://api.jd.com/routerjson; private final String appKey; private final String appSecret; private final CloseableHttpClient httpClient HttpClients.createDefault(); public JdGoodsApiClient(String appKey, String appSecret) { this.appKey appKey; this.appSecret appSecret; } /** * 查询商品详情京东联盟 * * param skuIds 商品 SKU ID支持多个逗号分隔批量最多 20 个 */ public JSONObject queryGoodsDetail(String skuIds) throws Exception { // 1. 公共参数 MapString, String params new HashMap(); params.put(app_key, appKey); params.put(method, jd.union.open.goods.detail.query); params.put(timestamp, String.valueOf(System.currentTimeMillis())); params.put(format, json); params.put(v, 2.0); // 2. 业务参数指定字段可减少响应体积、提升速度 JSONObject goodsReq new JSONObject(); goodsReq.put(skuIds, skuIds); goodsReq.put(fields, skuId,name,price,mainImg,stock,monthSales,promotionInfo); params.put(goods_req, goodsReq.toJSONString()); // 3. 生成签名 params.put(sign, JdSignUtil.sign(params, appSecret)); // 4. 发送 POST 请求 HttpPost post new HttpPost(API_URL); post.setEntity(new StringEntity(JSON.toJSONString(params), application/json)); post.setHeader(Content-Type, application/json); try (CloseableHttpResponse response httpClient.execute(post)) { String body EntityUtils.toString(response.getEntity(), UTF-8); JSONObject result JSON.parseObject(body); // 5. 统一错误处理 if (result.containsKey(error_response)) { JSONObject err result.getJSONObject(error_response); throw new RuntimeException( 调用失败: err.getString(msg) (code err.getString(code) )); } return result; } } public static void main(String[] args) throws Exception { JdGoodsApiClient client new JdGoodsApiClient(你的AppKey, 你的AppSecret); JSONObject result client.queryGoodsDetail(100012345678); System.out.println(result.toJSONString()); } }5.3 响应示例{ jd_union_open_goods_detail_query_response: { code: 0, result: { goodsInfo: { skuId: 100012345678, title: Apple iPhone 17 Pro 256GB, lowPrice: 8999.00, monthSales: 5200, mainImg: https://img10.360buyimg.com/..., promotionInfo: 满8000减500 } } } }六、调用频率限制2026 官方标准京东联盟基础权限QPS ≤ 10 次/秒日上限 5000 次高级权限可提升至 QPS ≤ 20、日上限 10 万。商家 JOS个人/基础账号 QPS ≤ 2企业账号默认 5 QPS可申请至 50 QPS。批量接口单次最多 20 个 SKU注意 1 次批量调用按 20 次单品调用计数。七、高频避坑指南签名失败排査时间戳必须是毫秒级误差需在有效期内参数值含空格或空值参与拼接会破坏签名排序必须严格按 ASCII 升序。限流应对生产环境加请求间隔建议 ≥1 秒 本地缓存 失败退避重试不要粗暴并发打满 QPS。批量查询分批一次最多 20 个 SKU超过要分批处理。合规红线严禁爬取售卖数据、绕链引流或伪造商品信息密钥放服务端前端绝不暴露。按需指定 fields只取需要的字段能显著减小响应体积并提升接口速度。八、总结Java 接入京东商品详情接口的核心就三步申请密钥 → HmacSHA256 签名 → POST 到 routerjson 网关。把签名工具类封装好、错误码处理好、限流做平滑一个稳定可靠的京东商品数据服务就搭建完成了。如果是商家自建 ERP则切换到jingdong.item.read.get体系并额外携带 OAuth2 的access_token即可整体签名逻辑保持一致。

相关推荐

OpenJarvis Morning Brief 实战:用本地 Agent 构建每天 7 点的个人晨报
OpenJarvis Morning Brief 实战:用本地 Agent 构建每天 7 点的个人晨报

【免费下载链接】OpenJarvis Personal AI, On Personal Devices 项目地址: https://gitcode.com/gh_mirrors/op/OpenJarvis 点击查看 免费下载 这是一篇关于 OpenJarvis Morning Brief(晨报)应用场景的完整技术指南。文章以官方 showcase 案… · 2026/9/24 22:15:47

减少对水资源的浪费,让每一滴水多循环一次!
减少对水资源的浪费,让每一滴水多循环一次!

科技在进步,社会在发展。我们改变不了洗车行业自动化洗车的发展趋势、也无力阻止规模化自助洗车行业的悄然兴起,改变不了自动洗车及规模化自助洗车大量用水的现实。由于用工成本高,在全国范围内无人值守的自动洗车机如雨后春笋般林立于城市的… · 2026/9/24 22:15:47

YOLO遥感电力塔目标检测:数据集格式转换与训练全流程指南
YOLO遥感电力塔目标检测:数据集格式转换与训练全流程指南

简介:面向目标检测学习者和遥感应用开发者,这份资源提供了真实场景下的电力塔目标检测数据集。数据集中包含一千张高质量图片,均已使用LabelImg完成标注,并同时提供VOC、COCO和YOLO三种格式标签,分别存放,可… · 2026/9/24 22:15:40

iPhone长截图方法详解:Safari整页、滚动拼接与PDF转换
iPhone长截图方法详解:Safari整页、滚动拼接与PDF转换

看到“苹果手机怎么一次性截长屏”这个问题还在被反复问,我就知道有很多人和我一样的经历:从安卓切到iPhone,第一周最痛苦的不是输入法,不是返回手势,而是找“滚动截图”按钮找了半天,结果发现iOS根本没有这… · 2026/9/24 23:00:06

CPU缓存工作原理:从地址分解到Cache Line对齐的工程实践
CPU缓存工作原理:从地址分解到Cache Line对齐的工程实践

1. 这不是课本里的“存储器”概念,而是你写代码时CPU真正看到的世界很多人学《计算机组成原理》的存储系统,一上来就背“Cache—主存—辅存”三级结构,记“命中率、缺失率、平均访问时间”这些公式,结果调试一个内存泄漏程序时完全… · 2026/9/24 23:00:06

Windows桌面程序开发方案对比:Electron、Tauri、C#、PyQt5与Win32选型指南
Windows桌面程序开发方案对比:Electron、Tauri、C#、PyQt5与Win32选型指南

1. 项目概述:为什么今天还要认真讨论Windows桌面程序开发方案? Windows桌面程序开发这件事,最近几年被很多人默认划进了“过时”行列——毕竟移动端和Web应用风头正劲,连不少招聘JD都写着“优先考虑Web全栈”,仿佛写个… · 2026/9/24 23:00:06

基于SpringBoot+Vue3+MyBatis的敬老院管理系统开发实践
基于SpringBoot+Vue3+MyBatis的敬老院管理系统开发实践

先聊点实在的。敬老院管理系统这类项目,放在前几年基本就是SSH或者JSPServlet的老古董,现在再看,主流方案基本已经收敛到SpringBootVue3MyBatis这一套前后端分离组合上了。如果你正在做毕业设计、接外包,或者想在公司内部快速搭一… · 2026/9/24 23:00:06

GitHub热榜深度解析:从趋势洞察到项目clone与部署实战
GitHub热榜深度解析:从趋势洞察到项目clone与部署实战

每天刷一遍 GitHub 热榜,已经成了我雷打不动的习惯。日榜看着只是“今天哪些仓库火了”的简单罗列,但盯久了你会发现,它其实是开源世界的晴雨表——哪个方向正在爆发、哪些工具解决了真痛点、哪些作者在闷声搞大事,几乎都能从榜单… · 2026/9/24 22:59:52

SpringBoot+Vue语言考试报名系统全解析:从数据库到部署
SpringBoot+Vue语言考试报名系统全解析:从数据库到部署

SpringBootVue语言考试报名系统,我一直觉得这类题目是Java Web毕设里性价比最高的。为什么?因为它的业务链路足够完整——从用户注册、考试报名、后台审核、题库管理到在线考试和成绩发布,每个环节都能用上不同的技术点;同时业务逻… · 2026/9/24 22:59:52

基于YOLOv8的渔船作业监控系统:从环境搭建到边缘部署全流程
基于YOLOv8的渔船作业监控系统:从环境搭建到边缘部署全流程

简介:这是一套面向计算机、人工智能、自动化等专业学生与教师的毕业设计级项目资源,围绕YOLOv8实现渔船作业监控系统,可用于毕设、课程设计、大作业或项目立项演示。压缩包共97个文件,约24.21MB,以70个Python源码文件为… · 2026/9/24 0:00:13

1D-CNN时间序列建模实战:从Conv1d原理到工业落地
1D-CNN时间序列建模实战:从Conv1d原理到工业落地

简介:面向时间序列数据建模的一维卷积神经网络完整实现,适合深度学习入门者及需要快速验证时序模型的研究者,能够从音频、文本、传感器或股价等序列中挖掘局部特征与时间依赖。压缩包体积很小,只有3KB,内含3个Python脚… · 2026/9/24 0:00:26

柔软的L:汉语语流中被忽视的舌肌张力控制
柔软的L:汉语语流中被忽视的舌肌张力控制

1. 这个“L”不是字母表里的L,而是舌尖上的L最近在几个方言群和语音教学社群里,反复看到有人发一句:“也说字母L:柔软的长舌”。初看以为是英语发音课笔记,点开才发现全是方言爱好者、播音系学生、语言康复师甚至戏曲演… · 2026/9/24 0:00:44

了解更多?预约专属演示

我们的顾问将为您一对一讲解产品与方案

企业微信二维码