我昨天刚刚开始开发Android应用程序,并对该技术非常有趣。
我需要创建一个应用程序,用户需要在edittext中输入城市名称,然后在textview中显示该城市的当前温度。
我想使用以下网址,我可以轻松添加城市名称。 目前我在路过悉尼。
http://www.google.com/ig/api?weather=sydney
请帮我解决这个问题。
答案 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