2009-04-10 36 views
0

我需要從servlet發出請求,但我還需要保留所有頭信息。這是在請求對象中。從Servlet發出URL請求並保留頭信息

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

回答

2

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

1

您可以使用request.getHeaderNames()方法枚舉所有標頭。但是,我建議使用HttpClient而不是UrlConnection來發出請求。

+0

另請參閱:http://stackoverflow.com/questions/96360/writing-post-data-from - 酮的Java servlet的到另一 – 2009-04-10 13:29:47