从Java调用Web服务/网站

问题描述:

为现有的GWT项目编写一些额外的类。我需要:从Java调用Web服务/网站

  • 请求的URL
  • 阅读网页中返回,以执行操作。

返回的页面是非常简单的HTML,因此解析它不应该很困难,我只需要首先获取数据。

如何在Java中执行此操作?我最看好哪些软件包?

+0

你是否需要在客户端或服务器端发生这种情况? – Bozho 2009-12-01 11:04:50

使用本机Java API,您可以使用java.net.URLConnection从URL读取。这里有一个简单的例子:

URL url = new URL("http://www.stackoverflow.com"); 
URLConnection urlConnection = url.openConnection(); 
InputStream result = urlConnection.getInputStream(); 

BufferedReader reader = new BufferedReader(new InputStreamReader(result)); 
String line = null; 
while ((line = reader.readLine()) != null) { 
    System.out.println(line); 
} 
reader.close(); 

你可以喂InputStream你的口味的任何DOM/SAX解析器。平均分析程序可以直接使用(作为参数)InputStreamJTidy是更好的HTML解析器之一。

为了方便起见,这里是一个速记直接从URL得到InputStream

InputStream result = new URL("http://www.stackoverflow.com").openStream(); 

对于HTML页面,您应该使用HttpClient

对于Web服务,您需要一个框架,如CXF

HttpClient虽然非常好,但被认为是过时的。 HttpComponents是一种替代方案。

如果你想要做这样的事情在客户端上,看看在HTTP types of GWT。但请注意,您需要接受same-origin policy