我需要从Servlet发出请求,但是我还需要保留所有标头信息。那是在请求对象中。
例如,如果我通过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();
最佳答案
使用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?)