准备工作:

1. 运行Eclipse (或其他Java IDE)

2.创建一个ConsoleAddItem工程(项目)

选JDK 1.5、1.6、1.8等版本,已测试1.6、1.8版本。

3、下载JAVA版本的eBay Trading SDK

地址:https://go.developer.ebay.com/javasdk

4、创建一个eBay用户令牌(eBay user token) 备用。

5、将下列库添加到项目构建路径(属性->Java Build Path->Libraries):

1) SDK libraries: {JavaSDK}lib目录下ebaysdkcore.jar, ebaycalls.jar, helper.jar

2) JAXWS-RI和其他libraries: {JavaSDK}libexternalLib目录下除了optional文件夹的所有jar

3) JRE System Library

    说明:

① eBay SDK library是SDK的主要组成部分。它封装了eBay API调用并为您隐藏了底层的通信细节。

② JAXWS-RI和其他库是第三方库。应用程序在编译和运行时会依赖这些库。

6、在src新建一个名为ApplicationAddItem.java的主程序类,包自己设置。

7、在文件夹src/com/resources下新建一个名为log4j.properties的配置文件(见清单一)。有了这个文件,SDK就会使用log4j作为基础日志框架,它会在控制台输出所有在log4j.properties中定义的日志项。一旦出现错误,日志对于排错会特别有用。

请确定src/main/resources文件夹在eclipse项目的编译路径中。

eBay SDK使用Java Simple Logging Facade(SLF4J),它是一个可以使用多种不同基础日志框架(比如log4j, java.util.logging)的简单门面。默认情况下eBay SDK使用log4j作为基础日志框架,如果您愿意的话,您可以选择其他的日志框架,例如java.util.logging。详情请参考您SDK安装根目录的doc/readme.htm文件中[关于日志的注意事项]部分。

清单一  日志配置

# ***** Set root logger level to debug and its appender to stdout.
log4j.rootLogger=DEBUG, stdout # ***** stdout is set to be a ConsoleAppender.
log4j.appender.stdout=org.apache.log4j.ConsoleAppender # ***** stdout uses PatternLayout.
log4j.appender.stdout.layout=org.apache.log4j.PatternLayout # ***** Pattern to output the caller's file name and line number.
log4j.appender.stdout.layout.ConversionPattern=[%-5p] %d%n%m%n%n

8、为了调用eBay API,首先你需要初始化ApiContext对象。ApiContext对象包含了所有调用eBay API所需的配置信息。

在主程序类中,新建一个名为getApiContext的方法(见清单二)。在这个方法中,我们通过获取用户在控制台中输入的用户令牌和服务器地址来初始化ApiContext对象。

清单二  初始化ApiContext对象

/**
* 输入eBay SDK ApiContext 用户数据
*
* @return ApiContext 对象
* @throws IOException
*/
private static ApiContext getApiContext() throws IOException { String input;
ApiContext apiContext = new ApiContext(); // 设置API Token 访问 eBay API服务器
ApiCredential cred = apiContext.getApiCredential();
input = ConsoleUtil.readString("输入您的eBay身份验证Token: ");
cred.seteBayToken(input); // 设置API服务器URL
input = ConsoleUtil.readString("输入 eBay SOAP 服务器URL (e.g., https://api.ebay.com/wsapi): ");
apiContext.setApiServerUrl(input); // 设置EPS图片服务器URL
        apiContext.setEpsServerUrl("https://api.sandbox.ebay.com/ws/api.dll"); return apiContext;
}

9、为了在eBay站点上登录一个商品,首先您需要新建ItemType类的一个实例。

在主程序类中,新建一个buildItem的方法(见清单三)。在这个方法中,我们通过具体商品的标题、描述、类别、支付方法和货运细节等信息来构建一个item。关于如何构造item的详细信息,请参考eBay Trading API documentati.

清单三  构建ItemType类

/**
* 构建ItemType类
* @return ItemType 对象
* @throws IOException
*/
private static ItemType builItem() throws IOException {
String input;
ItemType item = new ItemType(); // 项目标题
item.setTitle(ConsoleUtil.readString("标题: ")); // 画廊图片
        String[] paths = {"http://www.dilianidc.com/templets/twang/images/tw_11.jpg","http://www.dilianidc.com/templets/twang/images/tw_20.jpg"};
        PictureDetailsType pic = new PictureDetailsType();
        pic.setPictureURL(paths);
        //指定画廊图片
        pic.setGalleryType(GalleryTypeCodeType.GALLERY);
        item.setPictureDetails(pic);
    
        // 项目SKU
        item.setSKU(ConsoleUtil.readString("SKU: ")); // 项目描述
item.setDescription(ConsoleUtil.readString("描述:")); // 类型
item.setListingType(ListingTypeCodeType.CHINESE); // 货币
item.setCurrency(CurrencyCodeType.USD);
input = ConsoleUtil.readString("价格: ");
AmountType amount = new AmountType();
amount.setValue(Double.valueOf(input));
item.setStartPrice(amount); //上市时间
item.setListingDuration(ListingDurationCodeType.DAYS_3.value()); // 项目地点和国家
item.setLocation(ConsoleUtil.readString("地点位置"));
item.setCountry(CountryCodeType.US); // 分类
CategoryType cat = new CategoryType();
cat.setCategoryID(ConsoleUtil.readString("eBay类别 (e.g., 30022): "));
item.setPrimaryCategory(cat); // 库存数量
item.setQuantity(new Integer(1)); // 付款方式
item.setPaymentMethods(new BuyerPaymentMethodCodeType[]{BuyerPaymentMethodCodeType.PAY_PAL});
//设置 setPayPal 付款方式
item.setPayPalEmailAddress("888@yirose.com"); // item 状态, 全新(1000)
item.setConditionID(1000); // 需要处理时间
item. setDispatchTimeMax(Integer.valueOf(1)); // 运输细节
item.setShippingDetails(buildShippingDetails()); // 退货政策
ReturnPolicyType returnPolicy = new ReturnPolicyType();
returnPolicy.setReturnsAcceptedOption("ReturnsAccepted");
item.setReturnPolicy(returnPolicy); return item;
}

10、在主程序类中,创建一个名为buildShippingDetails的工具方法(见清单四)。该方法用于构造货运细节,buildItem方法会调用这个方法。

清单四  构建buildShippingDetails类

    /**
* 构建产品运输细节
* @return ShippingDetailsType 对象
*/
private static ShippingDetailsType buildShippingDetails() { // 运输细节
ShippingDetailsType sd =new ShippingDetailsType(); sd.setApplyShippingDiscount(new Boolean(true));
AmountType amount =new AmountType();
amount.setValue(2.8);
sd.setPaymentInstructions("eBay Java SDK 测试指令."); // 选择航运类型和航运服务
sd.setShippingType(ShippingTypeCodeType.FLAT);
ShippingServiceOptionsType shippingOptions = new ShippingServiceOptionsType();
shippingOptions.setShippingService(ShippingServiceCodeType.SHIPPING_METHOD_STANDARD.value()); //amount = new AmountType();
amount.setValue(2.0);
shippingOptions.setShippingServiceAdditionalCost(amount); //amount = new AmountType();
amount.setValue(10);
shippingOptions.setShippingServiceCost(amount);
shippingOptions.setShippingServicePriority(new Integer(1)); //amount = new AmountType();
amount.setValue(1);
shippingOptions.setShippingInsuranceCost(amount); sd.setShippingServiceOptions(new ShippingServiceOptionsType[]{shippingOptions}); return sd;
}

11、现在万事俱备,我们将各个部分在main方法中组合起来吧(见清单五)

清单五  main方法组合

public static void main(String[] args) {
try { System.out.println(" ");
System.out.println("+++++++++++++++++++++++++++++++++++++++ ");
System.out.println("+ 欢迎使用eBay API JAVA实例 + ");
System.out.println("+ - ConsoleAddItem + ");
System.out.println("+++++++++++++++++++++++++++++++++++++++ ");
System.out.println(" "); // [Step 1] eBay ApiContext 对象初始化
System.out.println("==== [1] 帐户信息 ====");
ApiContext apiContext = getApiContext(); // [Step 2] 创建新的 item 对象
System.out.println("==== [2] Item信息 ====");
ItemType item = builItem(); // [Step 3] 创建调用对象并执行调用
System.out.println("==== [3] 执行API调用 ====");
System.out.println("开始调用eBay API,请稍候… ");
AddItemCall api = new AddItemCall(apiContext);
api.setItem(item);
FeesType fees = api.addItem();
System.out.println("调用eBay API结束,显示调用结果…");
System.out.println(); // [Step 4] 显示结果
System.out.println("Listing已成功发布!"); double listingFee = eBayUtil.findFeeByName(fees.getFee(), "ListingFee").getFee().getValue();
System.out.println("Listing 费用是:" + new Double(listingFee).toString());
System.out.println("Listed Item ID:" + item.getItemID()); } catch (Exception e) {
System.out.println("错误!没有发布Listing");
e.printStackTrace();
}
}

ReviseItem 代码  修改Step 3

            // [Step 3] 创建调用对象并执行调用
System.out.println("==== [3] 执行API调用 ====");
System.out.println("开始调用eBay API,请稍候… "); ReviseItemCall api = new ReviseItemCall(apiContext);
api.setItemToBeRevised(item);
FeesType fees = api.reviseItem(); System.out.println("调用eBay API结束,显示调用结果…");
System.out.println();

12、ItemType实例创建之后,我们调用AddItem API并将新建的ItemType实例作为一个参数传递给这个API。如果调用成功,会返回一个FeesType实例。这个实例包含了登录商品所涉及的费用。最后,我们将商品登录费用和商品ID输出到控制台(在您的应用中, 您可以根据实际需求处理返回结果)。主函数也展示了基本的异常处理,一旦出错,您的应用程序有责任捕获并处理这些异常。
为了多次测试,可以把 eBayToken 和ServerUrl写死在代码中,免得每次都要去找Token。

测试结束,发布成功

 

Console Add Item –Java使用eBay API SDK刊登商品 详解的更多相关文章

  1. Elasticsearch java api 基本搜索部分详解

    文档是结合几个博客整理出来的,内容大部分为转载内容.在使用过程中,对一些疑问点进行了整理与解析. Elasticsearch java api 基本搜索部分详解 ElasticSearch 常用的查询 ...

  2. Java基础-反射(reflect)技术详解

    Java基础-反射(reflect)技术详解 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 一.类加载器 1>.JVM 类加载机制  如下图所示,JVM类加载机制分为五个部分 ...

  3. Python API 操作Hadoop hdfs详解

    1:安装 由于是windows环境(linux其实也一样),只要有pip或者setup_install安装起来都是很方便的 >pip install hdfs 2:Client——创建集群连接 ...

  4. Java 5 的新标准语法和用法详解集锦

    Java 5 的新标准语法和用法详解集锦 Java 5 的新标准语法和用法详解集锦 (需要在首选项-java-complier-compiler compliance level中设置为java5.0 ...

  5. Java进阶(三十二) HttpClient使用详解

    Java进阶(三十二) HttpClient使用详解 Http协议的重要性相信不用我多说了,HttpClient相比传统JDK自带的URLConnection,增加了易用性和灵活性(具体区别,日后我们 ...

  6. Java中的equals和hashCode方法详解

    Java中的equals和hashCode方法详解  转自 https://www.cnblogs.com/crazylqy/category/655181.html 参考:http://blog.c ...

  7. JAVA消息服务JMS规范及原理详解

    JAVA消息服务JMS规范及原理详解 一.简介 JMS即Java消息服务(Java Message Service)应用程序接口,是一个Java平台中关于面向消息中间件(MOM)的API,用于在两个应 ...

  8. [ 转载 ] Java开发中的23种设计模式详解(转)

    Java开发中的23种设计模式详解(转)   设计模式(Design Patterns) ——可复用面向对象软件的基础 设计模式(Design pattern)是一套被反复使用.多数人知晓的.经过分类 ...

  9. java中List的用法和实例详解

    java中List的用法和实例详解 List的用法List包括List接口以及List接口的所有实现类.因为List接口实现了Collection接口,所以List接口拥有Collection接口提供 ...

随机推荐

  1. 阶段3 2.Spring_10.Spring中事务控制_8 spring基于纯注解的声明式事务控制

    新建项目 把之前项目src下的内容全部复制过来 pom.xml内复制过来 开始配置 新建一个config的包,然后再新建配置文件类SpringConfiguration @Configuration这 ...

  2. 阶段3 2.Spring_04.Spring的常用注解_6 用于注入数据的注解

    @Qualifier 指定id为accountDao1 测试 如果把Autowired注释掉的话, 就会报空指针异常.就是没有注入进来 @Qualifier不能独立使用必须和Autowired配合使用 ...

  3. Python学习笔记:使用request库遇到的问题

    一.在请求参数中包含中文时,需要进行编码,如果不进行编码会报错 报错信息: 如:请求参数为:{"username":"超级管理员"} 在使用xlrd模块进行操作 ...

  4. c# VirtualKeys

    /// <summary> /// Enumeration for virtual keys taken from http://www.pinvoke.net/default.aspx/ ...

  5. 【SSM】---增删改查

    20:43:06 package com.chinasofti.dao; import java.util.List; import com.chinasofti.entity.User; publi ...

  6. 【ABAP系列】SAP ABAP 关于FUNCTION-POOL的理解

    公众号:SAP Technical 本文作者:matinal 原文出处:http://www.cnblogs.com/SAPmatinal/ 原文链接:[ABAP系列]SAP ABAP 关于FUNCT ...

  7. cocos2dx[3.2](7) 核心类Director/Scene/Layer/Sprite

    [核心类] 导演Director.场景Scene.布景层Layer.精灵Sprite的概念请移步: cocos2dx基础篇(2) 第一个程序 导演控制场景,场景控制图层,图层控制精灵,精灵控制动作. ...

  8. 微服务简历V1.0

    张三 电话:xxx-xxxx-xxxx      邮箱: xxxxxxx@qq.com 年龄:x岁        籍贯:江苏 求职意向:java开发工程师   期望薪资:面议 专业技能 熟练使用Ecl ...

  9. 【Deep Learning Nanodegree Foundation笔记】第 9 课:Model Evaluation and Validation

    In this lesson, you'll learn some of the basics of training models. You'll learn the power of testin ...

  10. Spring MVC 跳转页面的方法

    转一个Spring MVC 跳转页面的方法,楼主总结的很全面,留着备用. https://blog.csdn.net/c_royi/article/details/78528758