如何从用Java编写的Android应用程序正确地从Web REST GET获取我想要的值?

时间:2017-11-27 23:48:04

标签: java android xml rest api

这是我的API请求:

auto f_1_0 = []()->int{return 5;};
std::function<int(void)> f_1_1 = []()->int{return 5;};
SomeType f_2 = []()->int{return 5;}; // what's the SomeType here?

我需要从上面得到2个值,即TEMPERATURE在位置和时间下面的“值”,我需要SYMBOL的“数字”低于位置和时间。但是现在我只试图获得温度值。

我遵循了不同的指南,但没有任何帮助。

这就是我现在所拥有的。在MainActivity里面我有:

http://api.met.no/weatherapi/locationforecast/1.9/?lat=59.91;lon=10.76

然后我打电话给:

private class TemperatureTask extends AsyncTask<String, Void, Void> {

    TextView tv;

    @Override
    protected void onPreExecute() {
        super.onPreExecute();
    }

    @Override
    protected Void doInBackground(String... Url) {
        try {
            URL url = new URL(Url[0]);
            DocumentBuilderFactory dbf = DocumentBuilderFactory.newInstance();
            DocumentBuilder db = dbf.newDocumentBuilder();
            Document doc = db.parse(new InputSource(url.openStream()));
            doc.getDocumentElement().normalize();
            nodelist = doc.getElementsByTagName("time");

        } catch (Exception e) {
            Log.e("Error", e.getMessage());
            e.printStackTrace();
        }
        return null;
    }

    @Override
    protected void onPostExecute(Void args) {

            Node node = nodelist.item(0);
            if(node.getNodeType() == Node.ELEMENT_NODE) {
                Element element = (Element) node;

                testView.setText(testView.getText() + "\nTemperature: "
                + getNode("location", element));
            }
    }
}

private static String getNode(String tag, Element element) {
    NodeList nodeList = element.getElementsByTagName(tag).item(0)
            .getChildNodes();
    Node value = (Node) nodeList.item(0);
    return value.getNodeValue();
}

无论如何,我没有得到任何例外,但

String apiUrl = "http://api.met.no/weatherapi/locationforecast/1.9/?lat=59.91;lon=10.76";

new TemperatureTask().execute(apiUrl);

什么都不返回。

我能做些什么才能获得温度?这需要花费大量时间的原因是我看到的大多数XML都没有这种格式,其属性有很多这样的值。

0 个答案:

没有答案