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

标签 java servlets jakarta-ee urlconnection

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

例如,如果我在 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(); 

最佳答案

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

关于java - 从 Servlet 发出 URL 请求并保留 Header 信息,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/737543/

相关文章:

java - 支持 Jackson @JsonFilter 异步 DeferredResult

java - 在我的返回语句中找不到符号? java

java - 用于过滤/排序大量数据的插件或模块?

java - 尝试运行 servlet 时出现 Servlet 异常

java - 无法触及异常的根本原因

java - Java中如何知道类来自哪里

java - 哪个列表应该用于 hibernate ?

java - 没有收到 Java 中短信网关发送的短信?

java - 重复的局部变量 session (javax.jms.Session)

java - ActiveMQ查询: How to start