从 Servlet 发出 URL 请求并保留 Header 信息

发布于 2024-07-17 01:37:05 字数 648 浏览 8 评论 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(); 

I need to make a request from a servlet but I also need to retain all the header information. That is in the request object.

For example, I if I do something like the following from the doGet method, is there a simple way to just pass that information to the URL Connection object?

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

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

你爱我像她 2024-07-24 01:37:05

使用 URLConnectionaddRequestProperty 方法。

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?)

Use the addRequestProperty method of 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());
  }
}

You'll have a similar set of loops if you use HttpClient, unless it has built-in support for pass-through of a ServletRequest. (And if it doesn't, why bother with a huge set of additional dependencies, and non-standard API?)

耀眼的星火 2024-07-24 01:37:05

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

You can enumerate all the headers with the request.getHeaderNames() method. However, I recommend to use HttpClient instead of UrlConnection to make the request.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文