无法通过 EBay 的库存列出项目 API
Unable to List Item via EBay's Inventory API
我正尝试通过以下代码使用 EBay's Inventory API 在 EBay 上列出商品(我使用的是 Apache HTTP 客户端):
public void put() throws ClientProtocolException, IOException
{
String url = "https://api.ebay.com/sell/inventory/v1/inventory_item/83368339";
String charset = "utf-8";
HttpClient client = HttpClientBuilder.create().build();
HttpPut put = new HttpPut(url);
// add request header
put.addHeader("Authorization", "Bearer <TOKEN>");
put.addHeader("Content-Language", "en-US");
String json = "{ \"availability\": { \"pickupAtLocationAvailability\": [ { \"availabilityType\": \"IN_STOCK\", \"fulfillmentTime\": { \"unit\": \"TimeDurationUnitEnum\": \"BUSINESS_DAY\", \"value\": 1 }, \"merchantLocationKey\": \"NJ\", \"quantity\": 1 } ], \"shipToLocationAvailability\": { \"quantity\": 1 } }, \"condition\": \"ConditionEnum : [NEW]\", \"conditionDescription\": \"New condition\","
+ "\"product\": { \"aspects\": \"object\", \"brand\": \"Outlite\", \"description\": \"ADJUSTABLE FOCUS: Intense Spotlight for long range observation can up to 600 feet, Circle Floodlight for large area illumination\", \"imageUrls\": [ \"https://images-na.ssl-images-amazon.com/images/I/71c57aJiDAL._SL1500_.jpg\" ], \"title\": \"Outlite A100 Portable Ultra Bright Handheld LED Flashlight\", \"sku\": \"sku546372817\" }";
HttpResponse response = client.execute(put);
System.out.println("Response Code : "
+ response.getStatusLine().getStatusCode());
BufferedReader rd = new BufferedReader(
new InputStreamReader(response.getEntity().getContent()));
StringBuffer result = new StringBuffer();
String line = "";
while ((line = rd.readLine()) != null) {
result.append(line);
}
System.out.println(result);
}
但是我遇到了以下错误:
Response Code : 400
{"errors":[{"errorId":2004,"domain":"ACCESS","category":"REQUEST","message":"Invalid request","longMessage":"The request has errors. For help, see the documentation for this API.","parameters":[{"name":"reason","value":"Could not serialize field [availability.pickupAtLocationAvailability.availabilityType]"}]}]}
从上面的评论来看,有几个问题:
- 去掉周围的括号
- 删除 JSON
周围的引号
- 枚举格式
在最后一条评论并确认删除方括号 可能 已经解决了 availabilityType 枚举问题之后,我认为您的最终 JSON 应该如下所示:
String json = "{ \"availability\": { \"pickupAtLocationAvailability\": [ { \"availabilityType\": \"IN_STOCK\", \"fulfillmentTime\": { \"unit\": \"BUSINESS_DAY\", \"value\": 1 }, \"merchantLocationKey\": \"NJ\", \"quantity\": 1 } ], \"shipToLocationAvailability\": { \"quantity\": 1 } }, \"condition\": \"NEW\", \"conditionDescription\": \"New condition\","
+ "\"product\": { \"aspects\": \"object\", \"brand\": \"Outlite\", \"description\": \"ADJUSTABLE FOCUS: Intense Spotlight for long range observation can up to 600 feet, Circle Floodlight for large area illumination\", \"imageUrls\": [ \"https://images-na.ssl-images-amazon.com/images/I/71c57aJiDAL._SL1500_.jpg\" ], \"title\": \"Outlite A100 Portable Ultra Bright Handheld LED Flashlight\", \"sku\": \"sku546372817\" }}";
这里拆分成非Java转义:
{
"availability": {
"pickupAtLocationAvailability": [{
"availabilityType": "IN_STOCK",
"fulfillmentTime": {
"unit": "BUSINESS_DAY",
"value": 1
},
"merchantLocationKey": "NJ",
"quantity": 1
}],
"shipToLocationAvailability": {
"quantity": 1
}
},
"condition": "NEW",
"conditionDescription": "New condition",
"product": {
"aspects": "object",
"brand": "Outlite",
"description": "ADJUSTABLE FOCUS: Intense Spotlight for long range observation can up to 600 feet, Circle Floodlight for large area illumination",
"imageUrls": ["https://images-na.ssl-images-amazon.com/images/I/71c57aJiDAL._SL1500_.jpg"],
"title": "Outlite A100 Portable Ultra Bright Handheld LED Flashlight",
"sku": "sku546372817"
}
}
我也修改了 fulfillmentTime.unit 和条件枚举。看起来你可能在结尾处遗漏了一个右大括号,所以我也添加了它。
我正尝试通过以下代码使用 EBay's Inventory API 在 EBay 上列出商品(我使用的是 Apache HTTP 客户端):
public void put() throws ClientProtocolException, IOException
{
String url = "https://api.ebay.com/sell/inventory/v1/inventory_item/83368339";
String charset = "utf-8";
HttpClient client = HttpClientBuilder.create().build();
HttpPut put = new HttpPut(url);
// add request header
put.addHeader("Authorization", "Bearer <TOKEN>");
put.addHeader("Content-Language", "en-US");
String json = "{ \"availability\": { \"pickupAtLocationAvailability\": [ { \"availabilityType\": \"IN_STOCK\", \"fulfillmentTime\": { \"unit\": \"TimeDurationUnitEnum\": \"BUSINESS_DAY\", \"value\": 1 }, \"merchantLocationKey\": \"NJ\", \"quantity\": 1 } ], \"shipToLocationAvailability\": { \"quantity\": 1 } }, \"condition\": \"ConditionEnum : [NEW]\", \"conditionDescription\": \"New condition\","
+ "\"product\": { \"aspects\": \"object\", \"brand\": \"Outlite\", \"description\": \"ADJUSTABLE FOCUS: Intense Spotlight for long range observation can up to 600 feet, Circle Floodlight for large area illumination\", \"imageUrls\": [ \"https://images-na.ssl-images-amazon.com/images/I/71c57aJiDAL._SL1500_.jpg\" ], \"title\": \"Outlite A100 Portable Ultra Bright Handheld LED Flashlight\", \"sku\": \"sku546372817\" }";
HttpResponse response = client.execute(put);
System.out.println("Response Code : "
+ response.getStatusLine().getStatusCode());
BufferedReader rd = new BufferedReader(
new InputStreamReader(response.getEntity().getContent()));
StringBuffer result = new StringBuffer();
String line = "";
while ((line = rd.readLine()) != null) {
result.append(line);
}
System.out.println(result);
}
但是我遇到了以下错误:
Response Code : 400
{"errors":[{"errorId":2004,"domain":"ACCESS","category":"REQUEST","message":"Invalid request","longMessage":"The request has errors. For help, see the documentation for this API.","parameters":[{"name":"reason","value":"Could not serialize field [availability.pickupAtLocationAvailability.availabilityType]"}]}]}
从上面的评论来看,有几个问题:
- 去掉周围的括号
- 删除 JSON 周围的引号
- 枚举格式
在最后一条评论并确认删除方括号 可能 已经解决了 availabilityType 枚举问题之后,我认为您的最终 JSON 应该如下所示:
String json = "{ \"availability\": { \"pickupAtLocationAvailability\": [ { \"availabilityType\": \"IN_STOCK\", \"fulfillmentTime\": { \"unit\": \"BUSINESS_DAY\", \"value\": 1 }, \"merchantLocationKey\": \"NJ\", \"quantity\": 1 } ], \"shipToLocationAvailability\": { \"quantity\": 1 } }, \"condition\": \"NEW\", \"conditionDescription\": \"New condition\","
+ "\"product\": { \"aspects\": \"object\", \"brand\": \"Outlite\", \"description\": \"ADJUSTABLE FOCUS: Intense Spotlight for long range observation can up to 600 feet, Circle Floodlight for large area illumination\", \"imageUrls\": [ \"https://images-na.ssl-images-amazon.com/images/I/71c57aJiDAL._SL1500_.jpg\" ], \"title\": \"Outlite A100 Portable Ultra Bright Handheld LED Flashlight\", \"sku\": \"sku546372817\" }}";
这里拆分成非Java转义:
{
"availability": {
"pickupAtLocationAvailability": [{
"availabilityType": "IN_STOCK",
"fulfillmentTime": {
"unit": "BUSINESS_DAY",
"value": 1
},
"merchantLocationKey": "NJ",
"quantity": 1
}],
"shipToLocationAvailability": {
"quantity": 1
}
},
"condition": "NEW",
"conditionDescription": "New condition",
"product": {
"aspects": "object",
"brand": "Outlite",
"description": "ADJUSTABLE FOCUS: Intense Spotlight for long range observation can up to 600 feet, Circle Floodlight for large area illumination",
"imageUrls": ["https://images-na.ssl-images-amazon.com/images/I/71c57aJiDAL._SL1500_.jpg"],
"title": "Outlite A100 Portable Ultra Bright Handheld LED Flashlight",
"sku": "sku546372817"
}
}
我也修改了 fulfillmentTime.unit 和条件枚举。看起来你可能在结尾处遗漏了一个右大括号,所以我也添加了它。