2010-07-26 51 views
0

我想在我的Android应用程序中使用Gdata Apis。更具体地说,我想让用户能够搜索关键字,使用Gdata api在googleproducts中搜索这些关键字的产品,并解析我返回的xml。Android:在Android应用程序中访问Google产品搜索

我知道如何通过org.xml.sax.helpers.DefaultHandler解析xml文件,但我想我不会使用这样的Handler,而是依赖于Gdata api来为我解析xml。

我的问题是,我不知道如何将API集成到我的应用程序中。在stackoverflow中有一个类似的主题(hier),但我完全不满意他们给出的答案。只是给某人的信息“看看我们最近宣布的支持Android的GData Java库的2.1.0-alpha版本”并不能帮助我将gdata集成到我的应用程序中。

如果有人能分步指导如何将gdata api集成到我的应用程序中,包括代码示例以制作搜索请求并解析谷歌产品的结果,我将非常感激。

回答

3

经过研究一些日子里,我终于找到了一个解决方案:

谷歌给出了如何访问保存在谷歌基地(hier)项目介绍.Surprisingly你不需要实现任何谷歌数据库的API或任何可以访问Google产品的内容,您都可以通过简单的URL轻松查询它们。

您可以通过URL http://www.google.com/base/feeds/snippets访问Google Base和Google产品中的公共项目。您可以在此URL上附加特定查询,例如:?bq =数字+相机,用于搜索数码相机或?bq = 5030932067876,用于搜索实际的EAN代码。

您找回保存该查询结果的XML文档。例如,URL http://www.google.com/base/feeds/snippets?bq=5030932067876给你回以下XML的文档:

<?xml version='1.0' encoding='UTF-8'?> 
    <feed xmlns='http://www.w3.org/2005/Atom' xmlns:openSearch='http://a9.com/-/spec/opensearchrss/1.0/' xmlns:gm='http://base.google.com/ns-metadata/1.0' xmlns:g='http://base.google.com/ns/1.0' xmlns:batch='http://schemas.google.com/gdata/batch'> 
    <id>http://www.google.com/base/feeds/snippets</id> 
    <updated>2010-07-27T15:52:29.459Z</updated> 
    <title type='text'>Items matching query: 5030932067876</title> 
    <link rel='alternate' type='text/html' href='http://base.google.com'/> 
    <link rel='http://schemas.google.com/g/2005#feed' type='application/atom+xml' href='http://www.google.com/base/feeds/snippets'/> 
    <link rel='http://schemas.google.com/g/2005#batch' type='application/atom+xml' href='http://www.google.com/base/feeds/snippets/batch'/> 
    <link rel='self' type='application/atom+xml' href='http://www.google.com/base/feeds/snippets?start-index=1&amp;max-results=25&amp;bq=5030932067876'/> 
    <author> 
     <name>Google Inc.</name> 
     <email>[email protected]</email> 
    </author> 
    <generator version='1.0' uri='http://base.google.com'>GoogleBase</generator> 
    <openSearch:totalResults>20</openSearch:totalResults> 
    <openSearch:startIndex>1</openSearch:startIndex> 
    <openSearch:itemsPerPage>25</openSearch:itemsPerPage> 
    <entry> 
     <id>http://www.google.com/base/feeds/snippets/6567855098786723080</id> 
     <published>2009-06-17T19:10:11.000Z</published> 
     <updated>2010-07-26T19:36:16.000Z</updated> 
     <category scheme='http://base.google.com/categories/itemtypes' term='Produkte'/> 
     <title type='text'>Xb360 Fifa 09 Electronic Arts EAD07606316 5030932067876</title> 
     <content type='html'>FIFA 09 Die brandneue Fußballsimulation! Geh in FIFA 09 auf den Platz und spiel professionellen Fußball, so wie du ihn dir vorstellst. Erlebe die authentischste Fußballsimulation, die EA SPORTS? je veröffentlicht hat, lebe deinen Traum vom ...</content> 
     <link rel='alternate' type='text/html' href='http://www.mercateo.com/p/615IT-R78802/Xb360_Fifa_09.html?PageID=FG-615IT-R78802'/> 
     <link rel='self' type='application/atom+xml' href='http://www.google.com/base/feeds/snippets/6567855098786723080'/> 
     <author> 
     <name>Mercateo.com</name> 
     </author> 
     <g:zustand type='text'>neu</g:zustand> 
     <g:mpn type='text'>EAD07606316</g:mpn> 
     <g:image_link type='url'>http://images.mercateo.com/images/products/voelkner/906692_bb_00_fb.eps.jpg</g:image_link> 
     <g:item_language type='text'>DE</g:item_language> 
     <g:ean type='text'>5030932067876</g:ean> 
     <g:id type='text'>615IT-R78802</g:id> 
     <g:shipping type='shipping'> 
     <g:price>4.76 eur</g:price> 
     </g:shipping> 
     <g:target_country type='text'>DE</g:target_country> 
     <g:preis type='floatUnit'>34.14 eur</g:preis> 
     <g:expiration_date type='dateTime'>2010-08-25T19:36:16Z</g:expiration_date> 
     <g:marke type='text'>Electronic Arts</g:marke> 
     <g:customer_id type='int'>114950</g:customer_id> 
     <g:item_type type='text'>Produkte</g:item_type> 
    </entry> 

(...更多entrys来...)

您可以通过只是在做以下分析此文件:子类化org.xml.sax.helpers.DefaultHandler中。并用下面的代码初始化将myHandler(进口javax.xml.parsers.SAXParser中和javax.xml.parsers.SAXParserFactory中,使其工作):

MyHandler myHandler = new MyHandler(); 
String urlString = "http://www.google.com/base/feeds/snippets?bq=5030932067876"; 
URL link = new URL(urlString); 
SAXParserFactory spf = SAXParserFactory.newInstance(); 
SAXParser sp = spf.newSAXParser(); 
XMLReader xr = sp.getXMLReader(); 
xr.setContentHandler(myHandler); 
InputStream stream = link.openStream(); 
InputSource inputSource = new InputSource(stream); 
inputSource.setEncoding("ISO-8859-1"); 
xr.parse(inputSource); 

取决于你如何MyHandler的子类,对象将myHandler所应有的一切你刚解析的值。

希望它可以帮助别人!

相关问题