Использование API сайта в сервлете.Это правильный путь? - PullRequest
0 голосов
/ 07 декабря 2010
public java.lang.StringBuffer getRequestURL()

Я использую этот метод для вызова API другого веб-сайта, который предоставляет XML-данные в качестве ответа на него. Это правильный метод для использования с HTTPrequest / response.

Ответы [ 2 ]

2 голосов
/ 07 декабря 2010

Нет.Вы должны использовать new URL(url).openConnection() или некоторую абстракцию, например http компоненты или rest-client

0 голосов
/ 07 декабря 2010

Если вы хотите отправлять 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 напрямую.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...