Find the answer to your question
Advanced Search
Summary
This Java sample project illustrates the use of HttpURLConnection for posting Trading API Request XML to eBay trading API web service and JAXB framework for Java-XML mapping.
Two working sample applications: AddFixedPriceItemCall and GetSellerListCall are included in the attached project zip file.
SOFTWARE REQUIREMENTS
=====================
1. JAXWS2.1.5 or higher
- set the JWSDP_HOME system variable to point to your JAXWS2.1.5 installation directory.
2.JDK 1.6 or higher
INSTRUCTIONS
============
A. Binding Trading API Schema
1. Download the latest Trading API XSD file and save it to ${Trading_XML_Client_HOME}/XSD folder
2. Execute the jaxb-codeGen.xml script and generate java classes represent the Trading API Schema saved in step 1
> ant -f ${Trading_XML_Client_HOME}/jaxb-codeGen.xml
B. Build and run the samples
1. build and run the AddFixedPriceItemCall sample application
1.1 go to ${Trading_XML_Client_HOME}/samples/AddFixedPriceItemCall folder
1.2 edit the Configruation.xml file to specify your Sandbox user auth token
1.3 make neccessary modification to ${Trading_XML_Client_HOME}/samples/AddFixedPriceItemCall/src/com/ebay/sample/AddFixedPriceItemCall.java
1.4 execute the ant script to list an item to Sandbox environment
> ant -f build.xml
2. build and run the GetSellerListCall sample application
1.1 go to ${Trading_XML_Client_HOME}/samples/GetSellerListCall folder
1.2 edit the Configruation.xml file to specify your Sandbox user auth token
1.3 make neccessary modification to ${Trading_XML_Client_HOME}/samples/GetSellerListCall/src/com/ebay/sample/GetSellerListCall.java
1.4 execute the ant script to retrieve your active item list
> ant -f build.xml
Implmentation Detailes
1. Create a request type object, GetSellerListRequestType for example.
// create and initial an GetSellerListRequestType object GetSellerListRequestType request = new GetSellerListRequestType(); XMLRequesterCredentialsType requestCredential = new XMLRequesterCredentialsType(); requestCredential.setEBayAuthToken(sample.USERTOKEN); request.setRequesterCredentials(requestCredential); java.util.Calendar nowCal = java.util.Calendar.getInstance(); java.util.Calendar fromCal = (java.util.Calendar) nowCal.clone(); XMLGregorianCalendar xmlgregorianTo = toApiTime(nowCal); XMLGregorianCalendar xmlgregorianFrom = fromApiTime(fromCal,24); request.setErrorLanguage("en_US"); request.setIncludeWatchCount(Boolean.TRUE); request.setStartTimeFrom(xmlgregorianFrom); request.setStartTimeTo(xmlgregorianTo); |
2. Marshal JAXB object ( GetSellerListRequestType in this sample ) to XML request document
NOTE. For XML API request, you need to register your RequestCredentials( user token) object to request object ( AddFixedPriceItemRequestType, for example)
/* * marshal GetSellerListRequestType object to XML data file * */ private String marshalObject2Xml(GetSellerListRequestType requestobj) throws Exception { String requestXmlFileName = "GetSellerListRequest.xml"; jc = JAXBContext.newInstance(JAXB_PACKAGE_NAME); Marshaller m = jc.createMarshaller(); m.setProperty(Marshaller.JAXB_FORMATTED_OUTPUT, Boolean.TRUE); ObjectFactory of = new ObjectFactory(); JAXBElement<GetSellerListRequestType> requestElement = of.createGetSellerListRequest(requestobj); m.marshal(requestElement, new FileWriter(requestXmlFileName)); return requestXmlFileName; } |
3. Create HttpsURLConnection object, specify the required Trading API HTTP Headers and send the generated XML request document to the Trading API URL ( Sandbox : https://api.sandbox.ebay.com/ws/api.dll).
/* * open SSL https connection and send the request xml data * */ public InputStreamReader openConnectionFireRequest(String XmlFileName, String ApiCallName) throws Exception { URL url = new URL(SERVERURL); // open SSL https connection HttpsURLConnection conn = (HttpsURLConnection) url.openConnection(); conn.setRequestMethod("POST"); conn.setDoInput(true); conn.setDoOutput(true); conn.setRequestProperty("Content-Type", "text/xml"); // required headers conn.setRequestProperty("X-EBAY-API-COMPATIBILITY-LEVEL", "1235"); conn.setRequestProperty("X-EBAY-API-CALL-NAME", ApiCallName); conn.setRequestProperty("X-EBAY-API-SITEID", "0"); PrintWriter output = new PrintWriter(new OutputStreamWriter(conn.getOutputStream())); Thread.sleep(1000); String fileContent = convertFileContent2String(XmlFileName); System.out.println(conn.getURL()); System.out.println(fileContent); output.println(fileContent); output.close(); conn.connect(); InputStreamReader isr = new InputStreamReader(conn.getInputStream()); return isr; } |
4. Read the input stream returned in HttpsURLConnection.GetInputStream() to XML string and then unmarshal the XML document string to its corresponding Java Object ( GetSellerLisResponseType in our use case) for processing.
/* |