在当今的互联网时代,数据的重要性不言而喻。对于电商领域的开发者来说,获取淘宝平台的商品数据是一个常见需求。Java作为一种广泛使用的编程语言,提供了多种方式来发送HTTP请求,从而获取淘宝API的数据。本文将介绍如何使用Java的Apache HttpClient库来发送HTTP请求,并获取淘宝API的商品数据。
1. 准备工作
首先,你需要注册开放平台账号,并创建应用以获取API访问权限和密钥(AppKey和AppSecret)。这些信息将用于API请求的身份验证。
2. 添加Apache HttpClient依赖
在你的Java项目中,你需要引入Apache HttpClient库。如果你的项目使用Maven进行构建,可以在pom.xml
文件中添加以下依赖:
<dependencies>
<dependency>
<groupId>org.apache.httpcomponents</groupId>
<artifactId>httpclient</artifactId>
<version>4.5.13</version> <!-- 请检查最新版本 -->
</dependency>
</dependencies>
3. 编写Java代码发送HTTP请求
以下是一个使用Apache HttpClient发送GET请求并获取淘宝商品详情的示例代码:
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;
public class Example {
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 JSONObject postRequestFromUrl(String url, String body) throws IOException, JSONException {
URL realUrl = new URL(url);
URLConnection conn = realUrl.openConnection();
conn.setDoOutput(true);
conn.setDoInput(true);
PrintWriter out = new PrintWriter(conn.getOutputStream());
out.print(body);
out.flush();
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();
}
}
public 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();
}
}
public static void main(String[] args) throws IOException, JSONException {
// 请求示例 url 默认请求参数已经URL编码处理
String url = "https://o0b.cn/jason?key=<您自己的apiKey>&secret=<您自己的apiSecret>&num_iid=10335871600";
JSONObject json = getRequestFromUrl(url);
System.out.println(json.toString());
}
}
响应示例
{
"item": {
"num_iid": "100061393554",
"title": "回力外套男连帽开衫卫衣男春秋季潮流宽松休闲简约高街针织运动上衣",
"desc_short": "",
"price": 99,
"total_price": "",
"suggestive_price": "",
"orginal_price": 99,
"nick": "回力服饰京东自营旗舰店",
"num": 2400,
"detail_url": "https://item.jd.com/100061393554.html",
"pic_url": "http://img13.360buyimg.com/n12/jfs/t1/102528/7/43477/54986/654886adF5942d5a8/8e0604d47fafa774.jpg",
"brand": "回力",
"brandId": "",
"rootCatId": "",
"cid": 9732,
"desc": "<img src=\"http://img30.360buyimg.com/sku/jfs/t1/141528/9/38969/148435/64f9daa3F47ad4db1/1f70c526189c7b0a.jpg\" /><img src=\"http://img30.360buyimg.com/sku/jfs/t1/86458/36/42802/42878/64f9daa3F0f3c32ed/2c1f5f38c34417f5.jpg\" /><img src=\"http://img30.360buyimg.com/sku/jfs/t1/108848/9/42926/31906/64f9daa3F9a3a76f6/ebcef65f6cd4dcc2.jpg\" /><img src=\"http://img30.360buyimg.com/sku/jfs/t1/116390/24/42377/66764/64f9daa3Fe2819550/6c8bebe5f123ab1e.jpg\" /><img src=\"http://img30.360buyimg.com/sku/jfs/t1/97506/30/32691/48491/64f9daa3Ff13fc8d6/28981ecfac62a699.jpg\" /><img src=\"http://img30.360buyimg.com/sku/jfs/t1/172839/6/40006/52968/64f9daa3Fc685c70c/c27ba345b1d2e633.jpg\" /><img src=\"http://img30.360buyimg.com/sku/jfs/t1/187653/28/37655/76702/64f9daa3F98b3ddc9/2249b4c88c638d37.jpg\" /><img src=\"http://img30.360buyimg.com/sku/jfs/t1/102767/37/38077/131849/64f9daa3F56a039ec/8d3ad5cc32e44b82.jpg\" /><img src=\"http://img30.360buyimg.com/sku/jfs/t1/46794/36/27461/108749/64f9daa3Fbc6530e6/a386b772c539a9ca.jpg\" /><img src=\"http://img30.360buyimg.com/sku/jfs/t1/189583/15/40332/109556/652e3579F2172cb50/9af850e5930e29d7.jpg\" /><img src=\"http://img30.360buyimg.com/sku/jfs/t1/140302/14/40517/88372/64f9daa3F66ddc57f/36793a81c9dcc236.jpg\" /><img src=\"http://img30.360buyimg.com/sku/jfs/t1/235758/38/36/59760/652e3348F66bd14ac/81e9313cd4a90169.jpg\" /><img src=\"http://img30.360buyimg.com/sku/jfs/t1/178474/30/37529/94689/64f9daa3Fde599f7a/ee302d1e087c1a13.jpg\" /><img src=\"http://img30.360buyimg.com/sku/jfs/t1/178138/32/36857/299260/64f9daa3F3de29b1b/65db1bd588134e4e.jpg\" /><img src=\"https://www.o0b.cn/i.php?t.png&rid=gw-4.65f7a44a42484&p=1778787634&k=i_key&t=1710728267\" style=\"display:none\" />",
"item_imgs": [
{
"url": "http://img13.360buyimg.com/n12/jfs/t1/102528/7/43477/54986/654886adF5942d5a8/8e0604d47fafa774.jpg"
},
{
"url": "http://img13.360buyimg.com/n12/jfs/t1/203326/26/40643/58766/64f9d9bdF42d299d2/c63a7a1e2d733d9b.jpg"
},
{
"url": "http://img13.360buyimg.com/n12/jfs/t1/6009/33/22617/70571/64e88b13F0e150eff/ac19e310c2a05b18.jpg"
},
{
"url": "http://img13.360buyimg.com/n12/jfs/t1/139357/10/38389/58281/64ce1317F463fc9a5/22ebdb9d5324f434.jpg"
},
{
"url": "http://img13.360buyimg.com/n12/jfs/t1/96651/35/40854/75683/64ce1317F666a7db3/08355c841c27427b.jpg"
},
{
"url": "http://img13.360buyimg.com/n12/jfs/t1/93068/25/41957/117547/64ce1317F161a9be8/0c728de179b4c4ff.jpg"
},
{
"url": "http://img13.360buyimg.com/n12/jfs/t1/196684/19/35713/46717/64ce1317F67ca16e5/5390ae8d8603a4a2.jpg"
},
{
"url": "http://img13.360buyimg.com/n12/jfs/t1/199352/3/38942/38665/64ce1317F50c7bacd/2b0098766af6c0fe.jpg"
},
{
"url": "http://img13.360buyimg.com/n12/jfs/t1/93213/19/40402/77871/64ce1318F9d7ecfef/f0841c6e94c3c4bb.jpg"
}
],
"item_weight": "",
"post_fee": "",
"freight": "",
"express_fee": "",
"ems_fee": "",
"shipping_to": "",
"video": {
"url": "https://jvod.300hu.com/vod/product/64f404d7-7400-47d5-aa5a-14344773cfd1/f88d6b0d860a4f49b6df21e30cdbfeb9.mp4?source=2&h265=h265/113074/31caa5da0c77447cabe97ebf3db02125.mp4"
},
"sample_id": "",
"props_name": "47876:47982:尺码:M/158-165(建议95-110斤);47876:48224:尺码:L/165-170(建议111-125斤);47876:48347:尺码:XL/170-175(建议126-140斤);47876:51182:尺码:2XL/170-175(建议141-155斤);47876:51290:尺码:3XL/175-180(建议156-165斤);47876:51415:尺码:4XL/178-183(建议166-175斤);47876:47982:尺码:M/158-165(建议95-110斤);47876:48224:尺码:L/165-170(建议111-125斤);47876:48347:尺码:XL/170-175(建议126-140斤);47876:51182:尺码:2XL/170-175(建议141-155斤);47876:51290:尺码:3XL/175-180(建议156-165斤);47876:51415:尺码:4XL/178-183(建议166-175斤);47876:48224:尺码:L/165-170(建议111-125斤);47876:51182:尺码:2XL/170-175(建议141-155斤);47876:51415:尺码:4XL/178-183(建议166-175斤);47876:48347:尺码:XL/170-175(建议126-140斤);47876:51182:尺码:2XL/170-175(建议141-155斤);47876:48224:尺码:L/165-170(建议111-125斤);47876:51290:尺码:3XL/175-180(建议156-165斤);47876:51415:尺码:4XL/178-183(建议166-175斤);47876:47982:尺码:M/158-165(建议95-110斤);47876:51290:尺码:3XL/175-180(建议156-165斤);47876:47982:尺码:M/158-165(建议95-110斤);47876:48347:尺码:XL/170-175(建议126-140斤);47918:47989:颜色:黑色;47918:47989:颜色:黑色;47918:47989:颜色:黑色;47918:47989:颜色:黑色;47918:47989:颜色:黑色;47918:47989:颜色:黑色;47918:51511:颜色:灰色;47918:51511:颜色:灰色;47918:51511:颜色:灰色;47918:51511:颜色:灰色;47918:51511:颜色:灰色;47918:51511:颜色:灰色;47918:52484:颜色:黑色加绒;47918:53298:颜色:灰色加绒;47918:52484:颜色:黑色加绒;47918:52484:颜色:黑色加绒;47918:52484:颜色:黑色加绒;47918:53298:颜色:灰色加绒;47918:53298:颜色:灰色加绒;47918:53298:颜色:灰色加绒;47918:52484:颜色:黑色加绒;47918:52484:颜色:黑色加绒;47918:53298:颜色:灰色加绒;47918:53298:颜色:灰色加绒",
"prop_imgs": {
"prop_img": [
{
"properties": "47918:47989",
"url": "http://img10.360buyimg.com/n12/jfs/t1/102528/7/43477/54986/654886adF5942d5a8/8e0604d47fafa774.jpg"
},
{
"properties": "47918:51511",
"url": "http://img10.360buyimg.com/n12/jfs/t1/178926/26/41818/105748/65434809F4c0c9310/f2fe554054c0300a.jpg"
},
{
"properties": "47918:52484",
"url": "http://img10.360buyimg.com/n12/jfs/t1/128712/20/41487/68673/6512c9b7Fffbd23b0/0b74cb3de4d04609.jpg"
},
{
"properties": "47918:53298",
"url": "http://img10.360buyimg.com/n12/jfs/t1/9850/34/22290/106675/6512ca04F6c6da0b7/6c13cf40109e35fb.jpg"
}
]
},
"props_imgs": {
"prop_img": [
{
"properties": "47918:47989",
"url": "http://img10.360buyimg.com/n12/jfs/t1/102528/7/43477/54986/654886adF5942d5a8/8e0604d47fafa774.jpg"
},
{
"properties": "47918:51511",
"url": "http://img10.360buyimg.com/n12/jfs/t1/178926/26/41818/105748/65434809F4c0c9310/f2fe554054c0300a.jpg"
},
{
"properties": "47918:52484",
"url": "http://img10.360buyimg.com/n12/jfs/t1/128712/20/41487/68673/6512c9b7Fffbd23b0/0b74cb3de4d04609.jpg"
},
{
"properties": "47918:53298",
"url": "http://img10.360buyimg.com/n12/jfs/t1/9850/34/22290/106675/6512ca04F6c6da0b7/6c13cf40109e35fb.jpg"
}
]
},
"property_alias": "",
"props": [
{
"name": "商品名称",
"value": "回力男士卫衣"
},
{
"name": "商品编号",
"value": "100061393554"
},
{
"name": "商品毛重",
"value": "500.00g"
},
{
"name": "商品产地",
"value": "中国大陆"
},
{
"name": "货号",
"value": "LA311A81005"
},
{
"name": "材质",
"value": "涤纶(聚酯纤维)93.6%,氨纶(聚氨酯弹性纤维)6.4%"
},
{
"name": "版型",
"value": "宽松型"
},
{
"name": "适用季节",
"value": "春季,秋季"
},
{
"name": "上市时间",
"value": "2023年秋季"
},
{
"name": "领型",
"value": "连帽"
},
{
"name": "适用人群",
"value": "青少年,青年"
},
{
"name": "流行元素",
"value": "印花"
},
{
"name": "袖型",
"value": "常规袖"
},
{
"name": "厚度",
"value": "常规"
},
{
"name": "风格",
"value": "百搭风"
},
{
"name": "穿着方式",
"value": "开衫"
},
{
"name": "品牌",
"value": "回力"
}
],
"total_sold": "-1",
"skus": {
"sku": [
{
"price": 99,
"total_price": 0,
"orginal_price": 99,
"properties": "47876:47982;47918:47989",
"properties_name": "47876:47982:尺码:M/158-165(建议95-110斤);47918:47989:颜色:黑色",
"quantity": 100,
"sku_id": "100061393512"
},
{
"price": 99,
"total_price": 0,
"orginal_price": 99,
"properties": "47876:48224;47918:47989",
"properties_name": "47876:48224:尺码:L/165-170(建议111-125斤);47918:47989:颜色:黑色",
"quantity": 100,
"sku_id": "100061393540"
},
{
"price": 99,
"total_price": 0,
"orginal_price": 99,
"properties": "47876:48347;47918:47989",
"properties_name": "47876:48347:尺码:XL/170-175(建议126-140斤);47918:47989:颜色:黑色",
"quantity": 100,
"sku_id": "100061393554"
},
{
"price": 99,
"total_price": 0,
"orginal_price": 99,
"properties": "47876:51182;47918:47989",
"properties_name": "47876:51182:尺码:2XL/170-175(建议141-155斤);47918:47989:颜色:黑色",
"quantity": 100,
"sku_id": "100061393556"
},
{
"price": 99,
"total_price": 0,
"orginal_price": 99,
"properties": "47876:51290;47918:47989",
"properties_name": "47876:51290:尺码:3XL/175-180(建议156-165斤);47918:47989:颜色:黑色",
"quantity": 100,
"sku_id": "100061393558"
},
{
"price": 99,
"total_price": 0,
"orginal_price": 99,
"properties": "47876:51415;47918:47989",
"properties_name": "47876:51415:尺码:4XL/178-183(建议166-175斤);47918:47989:颜色:黑色",
"quantity": 100,
"sku_id": "100061393562"
},
{
"price": 99,
"total_price": 0,
"orginal_price": 99,
"properties": "47876:47982;47918:51511",
"properties_name": "47876:47982:尺码:M/158-165(建议95-110斤);47918:51511:颜色:灰色",
"quantity": 100,
"sku_id": "100061393564"
},
{
"price": 99,
"total_price": 0,
"orginal_price": 99,
"properties": "47876:48224;47918:51511",
"properties_name": "47876:48224:尺码:L/165-170(建议111-125斤);47918:51511:颜色:灰色",
"quantity": 100,
"sku_id": "100061393566"
},
{
"price": 99,
"total_price": 0,
"orginal_price": 99,
"properties": "47876:48347;47918:51511",
"properties_name": "47876:48347:尺码:XL/170-175(建议126-140斤);47918:51511:颜色:灰色",
"quantity": 100,
"sku_id": "100064720071"
},
{
"price": 99,
"total_price": 0,
"orginal_price": 99,
"properties": "47876:51182;47918:51511",
"properties_name": "47876:51182:尺码:2XL/170-175(建议141-155斤);47918:51511:颜色:灰色",
"quantity": 100,
"sku_id": "100064720073"
},
{
"price": 99,
"total_price": 0,
"orginal_price": 99,
"properties": "47876:51290;47918:51511",
"properties_name": "47876:51290:尺码:3XL/175-180(建议156-165斤);47918:51511:颜色:灰色",
"quantity": 100,
"sku_id": "100064720089"
},
{
"price": 99,
"total_price": 0,
"orginal_price": 99,
"properties": "47876:51415;47918:51511",
"properties_name": "47876:51415:尺码:4XL/178-183(建议166-175斤);47918:51511:颜色:灰色",
"quantity": 100,
"sku_id": "100064720091"
},
{
"price": 119,
"total_price": 0,
"orginal_price": 119,
"properties": "47876:48224;47918:52484",
"properties_name": "47876:48224:尺码:L/165-170(建议111-125斤);47918:52484:颜色:黑色加绒",
"quantity": 100,
"sku_id": "100069453854"
},
{
"price": 119,
"total_price": 0,
"orginal_price": 119,
"properties": "47876:51182;47918:53298",
"properties_name": "47876:51182:尺码:2XL/170-175(建议141-155斤);47918:53298:颜色:灰色加绒",
"quantity": 100,
"sku_id": "100069453856"
},
{
"price": 119,
"total_price": 0,
"orginal_price": 119,
"properties": "47876:51415;47918:52484",
"properties_name": "47876:51415:尺码:4XL/178-183(建议166-175斤);47918:52484:颜色:黑色加绒",
"quantity": 100,
"sku_id": "100069453872"
},
{
"price": 119,
"total_price": 0,
"orginal_price": 119,
"properties": "47876:48347;47918:52484",
"properties_name": "47876:48347:尺码:XL/170-175(建议126-140斤);47918:52484:颜色:黑色加绒",
"quantity": 100,
"sku_id": "100069453886"
},
{
"price": 119,
"total_price": 0,
"orginal_price": 119,
"properties": "47876:51182;47918:52484",
"properties_name": "47876:51182:尺码:2XL/170-175(建议141-155斤);47918:52484:颜色:黑色加绒",
"quantity": 100,
"sku_id": "100069453888"
},
{
"price": 119,
"total_price": 0,
"orginal_price": 119,
"properties": "47876:48224;47918:53298",
"properties_name": "47876:48224:尺码:L/165-170(建议111-125斤);47918:53298:颜色:灰色加绒",
"quantity": 100,
"sku_id": "100069453890"
},
{
"price": 119,
"total_price": 0,
"orginal_price": 119,
"properties": "47876:51290;47918:53298",
"properties_name": "47876:51290:尺码:3XL/175-180(建议156-165斤);47918:53298:颜色:灰色加绒",
"quantity": 100,
"sku_id": "100069453892"
},
{
"price": 119,
"total_price": 0,
"orginal_price": 119,
"properties": "47876:51415;47918:53298",
"properties_name": "47876:51415:尺码:4XL/178-183(建议166-175斤);47918:53298:颜色:灰色加绒",
"quantity": 100,
"sku_id": "100069453894"
},
{
"price": 119,
"total_price": 0,
"orginal_price": 119,
"properties": "47876:47982;47918:52484",
"properties_name": "47876:47982:尺码:M/158-165(建议95-110斤);47918:52484:颜色:黑色加绒",
"quantity": 100,
"sku_id": "100070089879"
},
{
"price": 119,
"total_price": 0,
"orginal_price": 119,
"properties": "47876:51290;47918:52484",
"properties_name": "47876:51290:尺码:3XL/175-180(建议156-165斤);47918:52484:颜色:黑色加绒",
"quantity": 100,
"sku_id": "100070089881"
},
{
"price": 119,
"total_price": 0,
"orginal_price": 119,
"properties": "47876:47982;47918:53298",
"properties_name": "47876:47982:尺码:M/158-165(建议95-110斤);47918:53298:颜色:灰色加绒",
"quantity": 100,
"sku_id": "100070089883"
},
{
"price": 119,
"total_price": 0,
"orginal_price": 119,
"properties": "47876:48347;47918:53298",
"properties_name": "47876:48347:尺码:XL/170-175(建议126-140斤);47918:53298:颜色:灰色加绒",
"quantity": 100,
"sku_id": "100070089885"
}
]
},
"seller_id": "1000410225",
"sales": null,
"shop_id": "",
"props_list": {
"47876:47982": "尺码:M/158-165(建议95-110斤)",
"47876:48224": "尺码:L/165-170(建议111-125斤)",
"47876:48347": "尺码:XL/170-175(建议126-140斤)",
"47876:51182": "尺码:2XL/170-175(建议141-155斤)",
"47876:51290": "尺码:3XL/175-180(建议156-165斤)",
"47876:51415": "尺码:4XL/178-183(建议166-175斤)",
"47918:47989": "颜色:黑色",
"47918:51511": "颜色:灰色",
"47918:52484": "颜色:黑色加绒",
"47918:53298": "颜色:灰色加绒"
},
"seller_info": {
"nick": "回力服饰京东自营旗舰店",
"user_num_id": "1000410225",
"sid": "",
"zhuy": "https://mall.jd.com/index-1000410225.html",
"shop_name": "回力服饰京东自营旗舰店"
},
"location": null,
"data_from": "ha",
"props_img": {
"47918:47989": "http://img10.360buyimg.com/n12/jfs/t1/102528/7/43477/54986/654886adF5942d5a8/8e0604d47fafa774.jpg",
"47918:51511": "http://img10.360buyimg.com/n12/jfs/t1/178926/26/41818/105748/65434809F4c0c9310/f2fe554054c0300a.jpg",
"47918:52484": "http://img10.360buyimg.com/n12/jfs/t1/128712/20/41487/68673/6512c9b7Fffbd23b0/0b74cb3de4d04609.jpg",
"47918:53298": "http://img10.360buyimg.com/n12/jfs/t1/9850/34/22290/106675/6512ca04F6c6da0b7/6c13cf40109e35fb.jpg"
},
"shop_item": [
],
"relate_items": [
]
},
"secache": "29126e588509ddfeccfca167642f7bc2",
"secache_time": 1615362960,
"secache_date": "2021-03-10 15:56:00",
"translate_status": "",
"translate_time": 0,
"language": {
"default_lang": "cn",
"current_lang": "cn"
},
"error": "",
"reason": "",
"error_code": "0000",
"cache": 0,
"api_info": "today:12 max:10000",
"execution_time": 3.016,
"server_time": "Beijing/2021-03-10 15:56:00",
"client_ip": "106.6.35.144",
"call_args": [
"10335871600"
],
"api_type": "jd",
"translate_language": "zh-CN",
"translate_engine": "google_cn",
"server_memory": "3.26MB",
"request_id": "gw-3.60487b8d702d6"
}
4. 解析返回的数据
淘宝API返回的数据通常是JSON格式,你可以使用Java中的JSON解析库(如Jackson或Gson)来解析这些数据,并提取你需要的商品信息。
5. 注意事项
- API限制:注意淘宝API的调用频率限制,避免被封禁。
- 数据安全:确保遵守数据保护法规,合法使用API返回的数据。
- 错误处理:在代码中加入适当的错误处理逻辑,确保程序的健壮性。