基本的Android应用程序,用于获取用户通过的城市的当前温度

时间:2012-02-10 10:52:04

标签: java android google-maps-api-3 android-2.2-froyo

我昨天刚刚开始开发Android应用程序,并对该技术非常有趣。

我需要创建一个应用程序,用户需要在edittext中输入城市名称,然后在textview中显示该城市的当前温度。

我想使用以下网址,我可以轻松添加城市名称。 目前我在路过悉尼。

http://www.google.com/ig/api?weather=sydney

请帮我解决这个问题。

3 个答案:

答案 0 :(得分:1)

我想你想通过调用url来了解如何使用你得到的XML文档?!

    DefaultHttpClient httpclient = new DefaultHttpClient();

    HttpGet httpget = new HttpGet(http://www.google.com/ig/api?weather=sydney);
    httpget.setHeader("Content-Type", "application/xml");

    ResponseHandler responseHandler = new BasicResponseHandler();
    String responseBody = httpclient.execute(httpget, responseHandler);

这基本上就是你所需要的。响应正文应包含xml文档。在那里你应该能够得到温度。

您可以通过向HttpClient构造函数添加凭据和其他参数来改进它。请参阅示例http://massapi.com/class/ba/BasicHttpParams.html

答案 1 :(得分:1)

对此调用的响应返回XML。您需要在DOM和SAX之间做出决定来解析xml响应。从Android xml解析谷歌开始。我找到了这个链接,还有更多。一切顺利。

http://android-pro.blogspot.in/2011/07/parsing-xml-wit-dom-parser.html

答案 2 :(得分:0)

使用SAX Parser,您可以执行以下操作。

/ *用HTML-Equivalent替换空格。 * /                          // url = new URL(queryString.replace(“”,“%20”));

                     /* Get a SAXParser from the SAXPArserFactory. */
                     SAXParserFactory spf = SAXParserFactory.newInstance();
                     SAXParser sp = spf.newSAXParser();

                     /* Get the XMLReader of the SAXParser we created. */
                     XMLReader xr = sp.getXMLReader();

                     /*
                      * Create a new ContentHandler and apply it to the
                      * XML-Reader
                      */
                     GoogleWeatherHandler gwh = new GoogleWeatherHandler();
                     xr.setContentHandler(gwh);

                     /* Use HTTPClient to deal with the URL */ 
                     HttpClient httpclient = new DefaultHttpClient(); 
                     HttpGet httpget = new HttpGet(queryString.replace(" ", "%20")); 
                     Log.d(DEBUG_TAG, "executing request " + httpget.getURI()); 
                     // create a response handler 
                     ResponseHandler<String> responseHandler = new BasicResponseHandler();
                     Log.i("Respond Handler","Step 1");
                     String responseBody = httpclient.execute(httpget, responseHandler); 
                      Log.d(DEBUG_TAG, "response from httpclient:\n "+responseBody); 

                     ByteArrayInputStream is = new ByteArrayInputStream(responseBody.getBytes()); 
                     xr.parse(new InputSource(is)); 
                     Log.d(DEBUG_TAG, "parse complete"); 
                     // parse complete