我想从以下网页获取当前时间: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/