准备工作:

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. LoadRunner运行时异常处理

    VuGen提供了错误处理函数lr_continue_on_error,用来在脚本中实时修改Vuser的出错设置.lr_continue_on_error函数语法结构如下: Loadrunner在运行过 ...

  2. 437路径总和III

    题目: 给定一个二叉树,它的每个结点都存放着一个整数值.找出路径和等于给定数值的路径总数.路径不需要从根节点开始,也不需要在叶子节点结束,但是路径方向必须是向下的(只能从父节点到子节点).来源: ht ...

  3. 【Java基础】对象序列化与读写

    package com.test.io; import java.io.FileInputStream; import java.io.FileNotFoundException; import ja ...

  4. 由于SID连接不匹配,监听器拒绝连接。

    java.sql.SQLException: Listener refused the connection with the following error:ORA-12505, TNS:liste ...

  5. Activity启动场景Task分析(二)

    场景分析 下面通过启动Activity的代码来分析一下: 1.桌面 首先,我们看下处于桌面时的状态,运行命令: adb shell dumpsys activity 结果如下 ACTIVITY MAN ...

  6. Day05:循环问题 / 数组

    循环嵌套 循环结构中包含完整的循环结构. 注意: 循环嵌套不限层次 各种循环语句都可以互相嵌套 内层循环中出现的break和continue只作用在内层循环中 外层循环循环一次 内层循环循环一遍 Ja ...

  7. MySQL 服务正在启动 MySQL 服务无法启动解决途径

    解决方案: 1.删除自己手动创建的data文件夹: 2.管理员权限CMD的bin目录下,移除已错误安装的mysqld服务: mysqld -remove MySQL出现删除成功! 3.在CMD的bin ...

  8. python基础--面向对象之封装

    # 在python中用双下划线,开头的方式将属性隐藏起来(设置成私有的) # 但其实这只是一种变形操作,而且仅仅在类定义阶段会发生变形 # 类中所有双下划线开头的如__x都会在类定义的时候自动形成:_ ...

  9. 4、android studio打包的时候遇到的问题

    那就去掉该签名 但是如果使用generated apk的话,则是不会去调用build.gradle文件的,需要使用gradle命令来打包 https://blog.csdn.net/cencibuqi ...

  10. 性能库 Oracle数据库 连接不上问题的解决

    今天性能库的centos 上面的oracle18c 数据库连接不上了 这里进行了一次简单处理 针对不同问题进行说明: 1. 实例时 blocked 的状态 问题现象: LSNRCTL> stat ...