嘿我试图解析谷歌的天气状况。但是它一直给我“错误”的消息,我在try catch block上定义了这个消息。我在下面打印了例外。
我调试了我的应用并找到了
xr.parse(new InputSource(website.openStream()));
在那一行,我的应用程序去捕捉。但不确定是什么问题。
public void onClick(View v) {
String c = city.getText().toString();
String s = state.getText().toString();
StringBuilder URL = new StringBuilder(baseURL);
URL.append(c + "," + s);
String fullUrl = URL.toString();
try {
URL website = new URL(fullUrl);
// getting xml reader to parse data
SAXParserFactory spf = SAXParserFactory.newInstance();
SAXParser sp = spf.newSAXParser();
XMLReader xr = sp.getXMLReader();
XmlHandler doingWork = new XmlHandler();
xr.setContentHandler(doingWork);
xr.parse(new InputSource(website.openStream()));
String information = doingWork.getInformation();
tv.setText(information);
} catch (Exception e) {
tv.setText("error");
}
XmlHandler.java
public class XmlHandler extends DefaultHandler {
private XmlData info = new XmlData();
public String getInformation() {
return info.dataToString();
}
@Override
public void startElement(String uri, String localName, String qName,
Attributes attributes) throws SAXException {
if (localName.equals("city")) {
String city = attributes.getValue("data");
info.setCity(city);
} else if (localName.equals("temp_f")) {
String t = attributes.getValue("data");
int temp = Integer.parseInt(t);
info.setTemp(temp);
}
}
}
XmlData.java
public class XmlData {
int temp = 0;
String city = null;
public void setCity(String c) {
city = c;
}
public void setTemp(int t) {
temp = t;
}
public String dataToString() {
return "In " + city + " The Current temp in F is" + temp + " degrees";
}
}
这是LogCat
02-04 17:46:16.124: W/System.err(647): java.io.FileNotFoundException: http://www.google.com/ig/api?weather=lincoln,nebraska
02-04 17:46:16.124: W/System.err(647): at org.apache.harmony.luni.internal.net.www.protocol.http.HttpURLConnectionImpl.getInputStream(HttpURLConnectionImpl.java:1162)
02-04 17:46:16.124: W/System.err(647): at java.net.URL.openStream(URL.java:653)
02-04 17:46:16.124: W/System.err(647): at com.android.WeatherXMLParsing.onClick(WeatherXMLParsing.java:61)
02-04 17:46:16.124: W/System.err(647): at android.view.View.performClick(View.java:2408)
02-04 17:46:16.124: W/System.err(647): at android.view.View$PerformClick.run(View.java:8816)
02-04 17:46:16.124: W/System.err(647): at android.os.Handler.handleCallback(Handler.java:587)
02-04 17:46:16.124: W/System.err(647): at android.os.Handler.dispatchMessage(Handler.java:92)
02-04 17:46:16.124: W/System.err(647): at android.os.Looper.loop(Looper.java:123)
02-04 17:46:16.124: W/System.err(647): at android.app.ActivityThread.main(ActivityThread.java:4627)
02-04 17:46:16.124: W/System.err(647): at java.lang.reflect.Method.invokeNative(Native Method)
02-04 17:46:16.124: W/System.err(647): at java.lang.reflect.Method.invoke(Method.java:521)
02-04 17:46:16.124: W/System.err(647): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:868)
02-04 17:46:16.124: W/System.err(647): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:626)
02-04 17:46:16.134: W/System.err(647): at dalvik.system.NativeStart.main(Native Method)
答案 0 :(得分:0)
当我尝试打开该网址时,我收到此消息
我们很抱歉......
...但您的计算机或网络可能正在发送自动查询。至 保护我们的用户,我们现在无法处理您的请求。
而不是获得XML响应。确保获得适当的API密钥(如果有),以便服务器不返回此响应。
答案 1 :(得分:0)
我很遗憾地报告说API已经被删除了一段时间。
更多信息here。它在当时引起了一些不安,但毕竟它是一个(非常好的)私有 API ......从来没有任何文档或支持它。