0

我需要从 servlet 发出请求,但我还需要保留所有标头信息。那是在请求对象中。

例如,如果我从 doGet 方法执行以下操作,是否有一种简单的方法可以将该信息传递给 URL Connection 对象?

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(); 
4

2 回答 2

2

使用 的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?)

于 2009-04-10T14:06:01.940 回答
1

您可以使用 request.getHeaderNames() 方法枚举所有标头。但是,我建议使用HttpClient而不是 UrlConnection 来发出请求。

于 2009-04-10T13:08:39.673 回答