我想从以下网页获取当前时间:http://api.geonames.org/timezone?lat=47.01&lng=10.2&username=demo
首先,我需要使用HTTP从该页面获取信息,然后解析XML并在控制台中显示当前时间。

我预期来自Web服务的消息是current time

我正在尝试像这样的东西,但是没有用。我有这样的输出:[#document: null]

import java.io.IOException;
import java.net.HttpURLConnection;
import java.net.URL;
import java.io.InputStream;

import org.w3c.dom.Document;
import javax.xml.parsers.DocumentBuilder;
import javax.xml.parsers.DocumentBuilderFactory;
import javax.xml.parsers.ParserConfigurationException;

 import org.xml.sax.SAXException;

 public class Main {

public static void main(String[] args) throws IOException, ParserConfigurationException {

    String uri =
            "http://api.geonames.org/timezone?lat=47.01&lng=10.2&username=demo";

        URL url = new URL(uri);
        HttpURLConnection connection =
            (HttpURLConnection) url.openConnection();
        connection.setRequestMethod("GET");
        connection.setRequestProperty("Accept", "application/xml");

        InputStream xml = connection.getInputStream();

        DocumentBuilderFactory dbf = DocumentBuilderFactory.newInstance();
        DocumentBuilder db = dbf.newDocumentBuilder();
        try {
            Document doc = (Document) db.parse(xml);
            System.out.println(doc);
        } catch (SAXException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }
}
}

最佳答案

看一下你的导入:

import javax.swing.text.Document;


强制转换只能失败。
不需要强制转换,因为DocumentBuilder.parse()返回org.w3c.dom.Document对象。

而是导入此类:

import org.w3c.dom.Document;


然后,您可以使用XPath检索time元素的值:

Document doc =  db.parse(xml);
XPath xPath = XPathFactory.newInstance().newXPath();
String time = (String)xPath.evaluate("/geonames/timezone/time",
            doc.getDocumentElement(), XPathConstants.STRING);

关于java - XMLHttpRequest用于从Web Api获取当前时间,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/48371732/

10-12 03:45