skip to Main Content

I have just started with the ebay Finding API and Feedback API and I need to deploy a basic API implementation on GAE/J.

The problems are:

  1. How do we start with the local dev environment of the ebay SDK?

  2. There is no Java tutorial for the Finding API and feedback.

  3. GAE/J + ebay APIs won’t cause any complexity right?

I am looking for head start in the right direction,I am using Eclipse + GAE plugin.

2

Answers


  1. Chosen as BEST ANSWER

    STEP BY STEP GUIDE: http://developer.ebay.com/DevZone/XML/docs/HowTo/FirstCall/MakingCallJava.html


    Got it, the simplest implementation can be HTTP GET/POST: (using name-value (NV) pairs)

    http://svcs.ebay.com/services/search/FindingService/v1?OPERATION-NAME=findItemsByKeywords
       &SERVICE-VERSION=1.0.0
       &SECURITY-APPNAME=YourAppID
       &RESPONSE-DATA-FORMAT=XML
       &REST-PAYLOAD
       &keywords=harry%20potter%20phoenix
    

    Source

    Now, if you specify the SECURITY-APPNAME as you appid, it will returns the list of items in XML. Now I just need to format that XML to HTML.

    SAMPLE: thelostlogbook.appspot.com

    Built using: JSP, http request (POST)


  2. A full example never hurt anyone so I am going to post a sample of code I am using to fetch information using ebay REST API

    package ebay;
    
    import java.io.ByteArrayInputStream;
    import java.io.InputStream;
    import javax.xml.parsers.DocumentBuilder;
    import javax.xml.parsers.DocumentBuilderFactory;
    import javax.xml.xpath.XPath;
    import javax.xml.xpath.XPathConstants;
    import javax.xml.xpath.XPathExpression;
    import javax.xml.xpath.XPathFactory;
    import org.w3c.dom.Document;
    import org.w3c.dom.Node;
    import org.w3c.dom.NodeList;
    
    import ebay.URLReader;
    
    /**
     *
     * @author rajeev jha ([email protected])
     *
     */
    public class EbayDriver {
    
        public final static String EBAY_APP_ID = "xxxxxxxxxxxxxxxxxxxxxxxxxxxx";
        public final static String EBAY_FINDING_SERVICE_URI = "http://svcs.ebay.com/services/search/FindingService/v1?OPERATION-NAME="
                + "{operation}&SERVICE-VERSION={version}&SECURITY-APPNAME="
                + "{applicationId}&GLOBAL-ID={globalId}&keywords={keywords}"
                + "&paginationInput.entriesPerPage={maxresults}";
        public static final String SERVICE_VERSION = "1.0.0";
        public static final String OPERATION_NAME = "findItemsByKeywords";
        public static final String GLOBAL_ID = "EBAY-US";
        public final static int REQUEST_DELAY = 3000;
        public final static int MAX_RESULTS = 10;
        private int maxResults;
    
        public EbayDriver() {
            this.maxResults = MAX_RESULTS;
    
        }
    
        public EbayDriver(int maxResults) {
            this.maxResults = maxResults;
        }
    
        public String getName() {
            return IDriver.EBAY_DRIVER;
        }
    
        public void run(String tag) throws Exception {
    
            String address = createAddress(tag);
            print("sending request to :: ", address);
            String response = URLReader.read(address);
            print("response :: ", response);
            //process xml dump returned from EBAY
            processResponse(response);
            //Honor rate limits - wait between results
            Thread.sleep(REQUEST_DELAY);
    
    
        }
    
        private String createAddress(String tag) {
    
            //substitute token
            String address = EbayDriver.EBAY_FINDING_SERVICE_URI;
            address = address.replace("{version}", EbayDriver.SERVICE_VERSION);
            address = address.replace("{operation}", EbayDriver.OPERATION_NAME);
            address = address.replace("{globalId}", EbayDriver.GLOBAL_ID);
            address = address.replace("{applicationId}", EbayDriver.EBAY_APP_ID);
            address = address.replace("{keywords}", tag);
            address = address.replace("{maxresults}", "" + this.maxResults);
    
            return address;
    
        }
    
        private void processResponse(String response) throws Exception {
    
    
            XPath xpath = XPathFactory.newInstance().newXPath();
            InputStream is = new ByteArrayInputStream(response.getBytes("UTF-8"));
            DocumentBuilderFactory domFactory = DocumentBuilderFactory.newInstance();
            DocumentBuilder builder = domFactory.newDocumentBuilder();
    
    
            Document doc = builder.parse(is);
            XPathExpression ackExpression = xpath.compile("//findItemsByKeywordsResponse/ack");
            XPathExpression itemExpression = xpath.compile("//findItemsByKeywordsResponse/searchResult/item");
    
            String ackToken = (String) ackExpression.evaluate(doc, XPathConstants.STRING);
            print("ACK from ebay API :: ", ackToken);
            if (!ackToken.equals("Success")) {
                throw new Exception(" service returned an error");
            }
    
            NodeList nodes = (NodeList) itemExpression.evaluate(doc, XPathConstants.NODESET);
    
            for (int i = 0; i < nodes.getLength(); i++) {
    
                Node node = nodes.item(i);
    
                String itemId = (String) xpath.evaluate("itemId", node, XPathConstants.STRING);
                String title = (String) xpath.evaluate("title", node, XPathConstants.STRING);
                String itemUrl = (String) xpath.evaluate("viewItemURL", node, XPathConstants.STRING);
                String galleryUrl = (String) xpath.evaluate("galleryURL", node, XPathConstants.STRING);
    
                String currentPrice = (String) xpath.evaluate("sellingStatus/currentPrice", node, XPathConstants.STRING);
    
                print("currentPrice", currentPrice);
                print("itemId", itemId);
                print("title", title);
                print("galleryUrl", galleryUrl);
    
            }
    
            is.close();
    
        }
    
        private void print(String name, String value) {
            System.out.println(name + "::" + value);
        }
    
        public static void main(String[] args) throws Exception {
            EbayDriver driver = new EbayDriver();
            String tag = "Velo binding machine";
            driver.run(java.net.URLEncoder.encode(tag, "UTF-8"));
    
        }
    }
    

    And here is the URLReader class

    package ebay;
    
    import java.io.BufferedReader;
    import java.io.InputStreamReader;
    import java.net.URL;
    import java.net.URLConnection;
    
    /**
     *
     * @author rajeev jha([email protected])
     * 
     */
    public class URLReader {
    
        public static String read(String address) throws Exception{
    
            URL url = new URL(address);
            URLConnection connection = url.openConnection();
            connection.setRequestProperty("User-Agent", "Mozilla/5.0 (Windows; U; Windows NT 6.1; zh-CN; rv:1.9.2.8) Gecko/20100722 Firefox/3.6.8");
    
            String line;
            String response;
            long totalBytes = 0  ;
    
            StringBuilder builder = new StringBuilder();
            BufferedReader reader = new BufferedReader(new InputStreamReader(connection.getInputStream()));
            while ((line = reader.readLine()) != null) {
                builder.append(line);
                totalBytes += line.getBytes("UTF-8").length ;
                //System.out.println("Total bytes read ::  " + totalBytes);
            }
    
            response = builder.toString();
    
            return response ;
        }
    
    }
    

    Happy coding!

    Login or Signup to reply.
Please signup or login to give your own answer.
Back To Top
Search