在servlet中使用网站的API。这是正确的方法吗?

时间:2010-12-07 06:17:41

标签: java jsp servlets

public java.lang.StringBuffer getRequestURL()

我正在使用此方法调用另一个网站的API,该网站提供XML数据作为响应。这是与HTTPrequest / response一起使用的正确方法吗? ?

2 个答案:

答案 0 :(得分:2)

没有。您应该使用new URL(url).openConnection()或某些抽象,例如http componentsrest-client

答案 1 :(得分:0)

如果您想从Servlet中发出HTTP请求,您可以像在任何进程中那样进行。像这样:

public static void main(String[] args) throws Exception {

  URL url = new URL("http://www.targetdomain.com/api?key1=value1&key2=value2...");

  HttpURLConnection conn = (HttpURLConnection) url.openConnection();
  conn.setConnectTimeout(5000);    // 5 seconds
  conn.setRequestMethod("GET");       
  conn.connect();
  BufferedReader rd  = new BufferedReader(new InputStreamReader(conn.getInputStream()));

  String line;
  StringBuffer bf = new StringBuffer();
  while ((line = rd.readLine()) != null) {
      bf.append(line);
  }
  conn.disconnect(); 

  //... pass bf to an XML parser and do your processing...
}

根据您正在使用的任何XML解析器,您可以跳过缓冲响应并将其放入StringBuffer,而是直接将解析器传递给响应InputStream。