380 likes | 565 Views
03-60-569 Project. Global Book retailer Titas Mutsuddy Quazi Rahman. Outline. Introduction. Service integration. Screen shots of project. Difficulties faced. Conclusion. Introduction. Project Description:
E N D
03-60-569 Project Global Book retailer Titas Mutsuddy Quazi Rahman
Outline • Introduction. • Service integration. • Screen shots of project. • Difficulties faced. • Conclusion.
Introduction Project Description: Integration of Amazon web service, eBay web service to find out cheap books and convert price to other currencies.
Web services • Amazon Web Service. • eBay Web service. • Currency Converter (XMathods).
Tools used • Axis 1.4 (switched from Axis2). • WSDL2Java • JAX-RPC • Tomcat 5.5 • J2sdk1.5 • Jsp • Servlet • Java Bean
Difficulties faced • Installation of Axis(2.0/1.4). • Class path setup. • Set up jar files in to lib. • Amazon web service call. • Set up keys for service call. • Soap message call.
Difficulties faced eBay web service call: Soap API . eBay Java SDK (XML based RPC). System development: SandBox development environment. Production development environment.
Difficulties faced • Difficulties with eBay:- • eBay active auction is so volatile that most of the time auction ended before debugging of codes. • eBay API manual is not friendly for new developers. • eBay uses their own “ItemID” for each item in active auction. • I Failed Item Specific search in eBay. Succeeded on category search. • Parsed whole category response xml to pick up item by “Title”. • Most of the time Amazon and eBay book title are not same. • Tried to find out possible pattern to split the titles to extract the name.
Difficulties faced eBay web service:- • Authentication failure: <?xml version="1.0" encoding="UTF-8"?> <eBay><EBayTime>2007-03-10 15:46:37</EBayTime><Errors><Error><Code>16112</Code> <SeverityCode>1</SeverityCode> <Severity>SeriousError</Severity> <Line>0</Line><Column>0</Column> <ErrorClass>RequestError</ErrorClass> <ShortMessage><![CDATA[Invalid authentication method.]]></ShortMessage><LongMessage><![CDATA[The authentication method you are using is invalid. Please use the eBay Authentication & Authorization method.]]></LongMessage></Error></Errors></eBay>
Difficulties faced • eBay web service “The velocity (rate of change) of eBay is notoriously fast. As anyone who has used eBay knows, things constantly change, and there is a fundamental release every 2 weeks. There are supporters and non-supporters of this, but it's something we all have to live with at this time, both eBay users and eBay employees…..” Best Regards,Amish PateleBay Developer Support
Difficulties faced GetItemRequest fails <?xml version="1.0" encoding="utf-8"?> <GetItemRequest xmlns="urn:ebay:apis:eBLBaseComponents"> <DetailLevel>ItemReturnAttributes</DetailLevel> <RequesterCredentials> <eBayAuthToken>MY TOKEN </eBayAuthToken> </RequesterCredentials> <ItemID>517203014</ItemID> </GetItemRequest>
Difficulties faced <?xml version="1.0" encoding="UTF-8"?> <GetItemResponse xmlns="urn:ebay:apis:eBLBaseComponents"> <Timestamp>2007-03-12T1 7:17:47.171Z</Timestamp> <Ack>Failure</Ack> <Errors> <ShortMessage>Item not found.</ShortMessage> <LongMessage>Item "517203014" is invalid, not activated,or no longer in our database, or an Live Auction item.</LongMessage> <ErrorCode>17</ErrorCode> <SeverityCode>Error</SeverityCode> <ErrorParameters ParamID="0"> <Value>517203014</Value> </ErrorParameters> <ErrorClassification>RequestError</ErrorClassification> </Errors> <Version>503</Version><Build>e503_core_Bundled_4329350_R1</Build> </GetItemResponse>
Difficulties faced zhuowei.developersupport@ebay.comPosts: 938 Member Since: 10/20/05 Re: GetItemRequest fails Posted: Mar 14, 2007 4:40 PM Reply Hi titasmutsuddy,You need to specify an eBay ItemID but ISBN # in your GetItem API request. You can get the item number in either your item's View Item or the seller's My eBay Selling page. Best Regards,Zhuowei YangeBay Developer Support
Difficulties faced <?xml version="1.0" encoding="UTF-8"?> <GetItemResponse xmlns="urn:ebay:apis:eBLBaseComponents"> <Timestamp>2007-03-14T0 3:22:17.302Z</Timestamp> <Ack>Failure</Ack> <Errors> <ShortMessage>Item not found.</ShortMessage> <LongMessage>Item "130094932808" is invalid, not activated, or no longer in our database, or an Live Auction item.</LongMessage> <ErrorCode>17</ErrorCode> <SeverityCode>Error</SeverityCode> <ErrorParameters ParamID="0"> <Value>130094932808</Value> </ErrorParameters> <ErrorClassification>RequestError</ErrorClassification> </Errors> <Version>503</Version> <Build>e503_core_Bundled_4329350_R1</Build> </GetItemResponse>
Difficulties faced GetSearchResultRequest:- <?xml version='1.0' encoding='utf-8'?>\r\n"+ <GetSearchResultsRequest xmlns=\"urn:ebay:apis:eBLBaseComponents\"> <ExternalProductID> <Value>0876295340</Value> <Type>ISBN</Type> </ExternalProductID> <Pagination> <EntriesPerPage>2</EntriesPerPage> <PageNumber>1</PageNumber> </Pagination> <RequesterCredentials> <eBayAuthToken>token</eBayAuthToken> </RequesterCredentials> </GetSearchResultsRequest>
Difficulties faced GetSearchResultResponse:- <?xml version="1.0" encoding="UTF-8"?> <GetSearchResultsResponse xmlns="urn:ebay:apis:eBLBaseComponents"> <Timestamp>2007-03-14T19:13:08.706Z</Timestamp> <Ack>Success</Ack> <Version>503</Version> <Build>e503_core_Bundled_4329350_R1</Build> <ItemsPerPage>100</ItemsPerPage> <PageNumber>1</PageNumber> <HasMoreItems>false</HasMoreItems> <PaginationResult> <TotalNumberOfPages>1</TotalNumberOfPages> <TotalNumberOfEntries>0</TotalNumberOfEntries> </PaginationResult> <CategoryArray/> </GetSearchResultsResponse>
Difficulties faced Error:- Content not allowed in prolog [Fatal Error] request.xml:1:41: Content is not allowed in prolog. Error Sending Request: org.xml.sax.SAXParseException: Content is not allowed in prolog. org.xml.sax.SAXParseException: Content is not allowed in prolog. at org.apache.xerces.parsers.DOMParser.parse(Unknown Source) at org.apache.xerces.jaxp.DocumentBuilderImpl.parse(Unknown Source) at javax.xml.parsers.DocumentBuilder.parse(DocumentBuilder.java:172) at GetSearchResults.SendRequest(GetSearchResults.java:220) at GetSearchResults.main(GetSearchResults.java:91)
Difficulties faced titasmutsuddyPosts: 4 Member Since: 3/13/07 PKIX path building failed Posted: Mar 14, 2007 9:38 PM ReplyHi,I am getting a strange error. I didn't get it 4-hours ago. It is like the following:-SendRequest IO Error:javax.net.ssl.SSLHandshakeException: sun.security.validator.ValidatorException:PKIX path building failed: sun.security.provider.certpath.SunCertPathBuilderException: unable to find valid certification path to requested target at com.sun.net.ssl.internal.ssl.Alerts.getSSLException(Alerts.java:150)at com.sun.net.ssl.internal.ssl.SSLSocketImpl.fatal(SSLSocketImpl.java:1518)at com.sun.net.ssl.internal.ssl.Handshaker.fatalSE(Handshaker.java:174)at com.sun.net.ssl.internal.ssl.Handshaker.fatalSE(Handshaker.java:168)and so on------Note that I am using the jre1.5.0_11 and checked for latest version and there is none.I will be pleased if you give any suggestions.Regards,Titas Mutsuddy
Difficulties faced Response:- javax.net.ssl.SSLHandshakeException: sun.security.validator.ValidatorException:PKIX path validation failed: java.security.cert.CertPathValidatorException: timestamp check failed I think Sun changed the default TrustManagerFactory from SunX509 to SunPKIX sometime during the 1.5.0 update cycle. grep ManagerFactory $JAVA_HOME/jre/lib/security/java.security You should be able to override these with system properties.
Difficulties faced Default:- ssl.KeyManagerFactory.algorithm=SunX509 ssl.TrustManagerFactory.algorithm=PKIX OverWritten in the following properties file:- D:\Sun\AppServer\jdk\jre\lib\security\java.security(properties file):- ssl.KeyManagerFactory.algorithm=PKIX ssl.TrustManagerFactory.algorithm=PKIX
Difficulties faced caradtesterPosts: 1 Member Since: 3/10/06 Re: PKIX path building failed Posted: Mar 14, 2007 11:48 PM ReplyYour JDK is probably missing one of the CA-certs in the path for https://api.sandbox.ebay.comIt seems sandbox may have updated the SSL certificate within the last 24 hours. Hopefully there will be an official update soon.Meanwhile.... you might try this (assuming windows platform):1. In IE, connect to https://api.sandbox.ebay.com2. Go to Tools > Internet Options > Content > Certificates > Intermediate Certification Authorities [or "Trusted Root Certification Authorities"]3. Choose "VeriSign Class 3 Secure Server CA" (I assume this is the certificate that is missing... you can confirm by comparing thumbprints to what is in your keystore)4. Click "Export...", then "Next>"5. Select "DER encoded binary X.509 (.CER)"6. Name the file c:\temp\verisignsecureserver.cer7. Select "Finish"8. \j2sdk1.4.2_08\bin\keytool -keystore \j2sdk1.4.2_08\jre\lib\security\cacerts -import -alias verisignsecureserver -file c:\temp\verisignsecureserver.cer -trustcacerts9. del c:\temp\verisignsecureserver.cerNote that you must have a full JDK installed (not just the JRE) to have access. The default password for the JDK keystore is well-known: changeitPlease post feedback if this worked for you or not.
Difficulties faced GetSearchResultRequest (Category search succeeded):- <?xml version='1.0' encoding='utf-8'?> < GetSearchResultRequest xmlns="urn:ebay:apis:eBLBaseComponents"> <RequesterCredentials> <eBayAuthToken>token </eBayAuthToken> </RequesterCredentials> <ErrorLevel>1</ErrorLevel> <Query>books</Query> <MaxResults>2</MaxResults> <SiteId>0</SiteId> </GetSearchResultRequest>
Conclusion • Rate of change of eBay is notoriously fast. • Failed “Item specific” search in eBay web service. • eBay XML based Java API is difficult to handle. • eBay introduced SOAP based API in mid-2004 and still eBay platform is undergoing significant transition to SOAP.
Future extension • Item wise search for eBay. • Integrate other available book retailers web service. • Try to create the Shopping Cart (Most difficult part of the project).