Сделайте URL-запрос из сервлета и сохраните информацию заголовка - PullRequest
0 голосов
/ 10 апреля 2009

Мне нужно сделать запрос от сервлета, но мне также нужно сохранить всю информацию заголовка. То есть в объекте запроса.

Например, если я делаю что-то вроде следующего из метода doGet, есть ли простой способ просто передать эту информацию объекту соединения URL?

URL url = new URL();
URLConnection uc = url.openConnection();
uc.setDoOutput(true);
uc.setDoInput(true);
uc.setUseCaches(false);

uc.setRequestProperty("Content-type",
"application/x-www-form-urlencoded");

DataOutputStream dos = new DataOutputStream(uc.getOutputStream());
dos.writeBytes(strInEnc);
dos.flush();
dos.close();

InputStreamReader in = new InputStreamReader(uc.getInputStream());
int chr = in.read();
while (chr != -1) {
taResults.append(String.valueOf((char) chr));
chr = in.read(); 

Ответы [ 2 ]

2 голосов
/ 10 апреля 2009

Используйте метод addRequestProperty URLConnection.

Enumeration<?> names = req.getHeaderNames();
while (names.hasMoreElements()) {
  String key = (String) names.nextElement();
  Enumeration<?> values = req.getHeaders(key);
  while (values.hasMoreElements()) {
    uc.addRequestProperty(key, (String) values.nextElement());
  }
}

У вас будет аналогичный набор циклов, если вы будете использовать HttpClient, если только он не имеет встроенной поддержки сквозного доступа ServletRequest. (А если нет, зачем беспокоиться об огромном наборе дополнительных зависимостей и нестандартных API?)

1 голос
/ 10 апреля 2009

Вы можете перечислить все заголовки с помощью метода request.getHeaderNames (). Однако для выполнения запроса я рекомендую использовать HttpClient вместо UrlConnection.

...