2009-04-10 3 views
0

서블릿에서 요청해야하지만 모든 헤더 정보도 유지해야합니다. 요청 개체에 있습니다.서블릿에서 URL 요청을 만들고 헤더 정보를 보유하십시오.

예를 들어 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(); 

답변

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 –

관련 문제