代码之家  ›  专栏  ›  技术社区  ›  Pascal Klein

Android:在Android应用程序中访问Google产品搜索

  •  0
  • Pascal Klein  · 技术社区  · 16 年前

    我想在我的Android应用程序中使用gdataapi。更具体地说,我想让用户能够搜索关键字,使用gdataapi在googleproducts中搜索这些关键字的产品,并解析我得到的xml。

    我的问题是我不知道如何在我的应用程序中集成api。stackoverflow中有一个类似的主题( hier )但我对他们的回答一点也不满意。仅仅给某人一些信息“看看我们最近发布的支持Android的gdatajava库的2.1.0-alpha版本”并不能帮助我将GData集成到我的应用程序中。

    1 回复  |  直到 9 年前
        1
  •  3
  •   Pascal Klein    16 年前

    经过几天的研究,我终于找到了解决办法:

    hier )令人惊讶的是,您不需要实现任何Google数据库api或任何东西来访问Google产品,您可以通过简单的URL轻松地查询它们。

    http://www.google.com/base/feeds/snippets

    您将返回一个包含该查询结果的XML文档。例如url http://www.google.com/base/feeds/snippets?bq=5030932067876

    <?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>base@google.com</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>
    

    (... 还有更多的入口……)

    只需执行以下操作即可解析此文档:为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);
    

    希望它能帮助别人!

    推荐文章