0

ねえ、私はグーグルから気象条件を解析しようとしています。しかし、常にtry catchブロックで定義した「エラー」メッセージが表示されます。これは、以下の例外として出力しました。

アプリをデバッグして調べました

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)
4

2 に答える 2

0

そのURLを開こうとすると、このメッセージが表示されます

私たちは申し訳なく思っています...

...しかし、コンピュータまたはネットワークが自動クエリを送信している可能性があります。ユーザーを保護するため、現在リクエストを処理することはできません。

XML応答を取得する代わりに。サーバーがこの応答を返さないように、適切なAPIキー(存在する場合)を取得していることを確認してください。

于 2013-02-04T15:55:34.813 に答える
0

しばらく前にAPIが削除されたことをお詫び申し上げます。

詳細はこちら。当時は少し動揺していましたが、結局のところ、それは(非常に素晴らしい)プライベートAPIでした...それに対するドキュメントやサポートはありませんでした。

于 2013-02-04T16:35:00.047 に答える