2009-04-10 11 views
0

サーブレットからリクエストを行う必要がありますが、すべてのヘッダ情報も保持する必要があります。これはリクエストオブジェクトにあります。サーブレットから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

addRequestPropertyの方法をURLConnectionとしてください。それが組み込まれていない限り、サポートServletRequestのパススルーのためにあなたは、HttpClientを使用している場合

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

あなたは、ループの同様のセットを持っています。 (そうでなければ、なぜ追加の依存関係の大きなセットと非標準のAPIが気になるのですか?)

1

すべてのヘッダーをrequest.getHeaderNames()メソッドで列挙できます。ただし、UrlConnectionの代わりにHttpClientを使用してリクエストを行うことをお勧めします。

+0

も参照してください:http://stackoverflow.com/questions/96360/writing-post-data-from -one-java-servlet-to-another –

関連する問題