淘宝商品详情API系列的核心接口为taobao.item.get,该接口用于获取淘宝或天猫商品的详细信息,包括商品标题、价格、库存、描述、图片等关键字段。以下是该接口的详细说明:
一、接口基本信息
- 接口名称:
taobao.item.get - 请求地址:o0b.cn/anzexi
- 请求方式:GET或POST
- 返回格式:JSON
二、请求参数
- app_key:应用的App Key,用于身份验证。
- method:接口名称,固定为
taobao.item.get。 - format:返回格式,固定为
json。 - v:API协议版本,固定为
2.0。 - timestamp:当前时间戳,用于防止请求重放。
- sign_method:签名算法,可选
md5或hmac。 - sign:签名,用于验证请求的合法性。
- num_iid:商品ID,必填字段,用于指定要获取详情的商品。
- fields:需要返回的字段列表,多个字段用逗号分隔。例如,
fields=num_iid,title,price,pic_url表示返回商品ID、标题、价格和主图URL。
三、响应参数
响应数据通常包含以下字段(具体字段可能因接口版本或商品类型而有所不同):
- num_iid:商品ID。
- title:商品标题。
- price:商品价格。
- orginal_price:原价(如有)。
- pic_url:商品主图URL,可能有多个图片链接。
- desc:商品描述(可能包含HTML格式的内容)。
- props:商品属性列表,如颜色、尺码、材质等。
- skus:商品SKU信息,包括价格、库存、属性等。
四、调用示例(以Java为例)
java import java.io.BufferedReader; import java.io.IOException; import java.io.InputStream; import java.io.InputStreamReader; import java.io.Reader; import java.net.URL; import java.nio.charset.Charset; import org.json.JSONException; import org.json.JSONObject; import java.io.PrintWriter; import java.net.URLConnection; import java.util.HashMap; import java.util.Map; import java.util.TreeMap; import java.security.MessageDigest; import java.security.NoSuchAlgorithmException; public class TaobaoItemGetExample { // 生成签名 private static String generateSign(Map<String, String> params, String appSecret) throws NoSuchAlgorithmException { Map<String, String> sortedParams = new TreeMap<>(params); StringBuilder sb = new StringBuilder(appSecret); for (Map.Entry<String, String> entry : sortedParams.entrySet()) { sb.append(entry.getKey()).append(entry.getValue()); } sb.append(appSecret); MessageDigest md = MessageDigest.getInstance("MD5"); byte[] bytes = md.digest(sb.toString().getBytes()); StringBuilder hexString = new StringBuilder(); for (byte b : bytes) { String hex = Integer.toHexString(0xff & b); if (hex.length() == 1) { hexString.append('0'); } hexString.append(hex); } return hexString.toString().toUpperCase(); } // 发送GET请求 private static JSONObject getRequestFromUrl(String url) throws IOException, JSONException { URL realUrl = new URL(url); URLConnection conn = realUrl.openConnection(); InputStream instream = conn.getInputStream(); try { BufferedReader rd = new BufferedReader(new InputStreamReader(instream, Charset.forName("UTF-8"))); String jsonText = readAll(rd); JSONObject json = new JSONObject(jsonText); return json; } finally { instream.close(); } } // 读取输入流 private static String readAll(Reader rd) throws IOException { StringBuilder sb = new StringBuilder(); int cp; while ((cp = rd.read()) != -1) { sb.append((char) cp); } return sb.toString(); } public static void main(String[] args) { String appKey = "YOUR_APP_KEY"; String appSecret = "YOUR_APP_SECRET"; String numIid = "652874751412"; // 商品ID String fields = "num_iid,title,price,pic_url"; // 需要返回的字段 Map<String, String> params = new HashMap<>(); params.put("method", "taobao.item.get"); params.put("app_key", appKey); params.put("format", "json"); params.put("v", "2.0"); params.put("timestamp", String.valueOf(System.currentTimeMillis() / 1000)); params.put("sign_method", "md5"); params.put("num_iid", numIid); params.put("fields", fields); try { String sign = generateSign(params, appSecret); params.put("sign", sign); StringBuilder urlBuilder = new StringBuilder("https://gw.api.taobao.com/router/rest?"); for (Map.Entry<String, String> entry : params.entrySet()) { urlBuilder.append(entry.getKey()).append("=").append(entry.getValue()).append("&"); } urlBuilder.deleteCharAt(urlBuilder.length() - 1); // 移除最后一个& JSONObject json = getRequestFromUrl(urlBuilder.toString()); System.out.println(json.toString(2)); // 格式化输出JSON } catch (Exception e) { e.printStackTrace(); } } }
五、注意事项
- 身份验证:调用API前需在淘宝开放平台注册开发者账号,创建应用并获取App Key和App Secret。
- 签名生成:签名是验证请求合法性的重要步骤,需按照淘宝开放平台的规则生成。
- 频率限制:淘宝API有调用频率限制,需合理控制请求频率,避免被封禁。
- 错误处理:需实现完善的错误处理机制,根据API返回的错误码进行相应处理。