보기 : 서버로 요청을 보낼 방법 및 URL 번호가 연결쿠키가 HttpURLConnection에서 Java로 설정되는시기는 언제입니까? 이 코드에서
HttpURLConnection conn = (HttpURLConnection) new URL(url).openConnection();
conn.setRequestProperty("Cookie","JSESSIONID=" + J_SESSION_ID);
conn.connect();
URL 번호에 대해서 openConnection :
public static String get(String url, Properties parameters) throws MalformedURLException, IOException{
url = buldGetUrl(url, parameters);
if(DEBUG) System.out.println("[HTTP GET REQUEST]");
if(DEBUG) System.out.println(" URL: " + url);
HttpURLConnection conn = (HttpURLConnection) new URL(url).openConnection();
conn.setRequestProperty("Cookie","JSESSIONID=" + J_SESSION_ID);
conn.connect();
if(DEBUG) System.out.println("\n[HTTP GET RESPONSE]");
if(DEBUG) System.out.println("==== Response Headers =====");
String serverCookies = conn.getHeaderField("Set-Cookie");
if(serverCookies != null){
String[] cookies = serverCookies.split(";");
for(String s : cookies){
s = s.trim();
if(s.split("=")[0].equals("JSESSIONID")){
J_SESSION_ID = s.split("=")[1];
if(DEBUG) System.out.println(" Session ID Found: " + J_SESSION_ID);
break;
}
}
}
if(DEBUG){
for(String s : conn.getHeaderFields().keySet()){
if(s == null)
System.out.println(" " + conn.getHeaderField(s));
else
System.out.println(" " + s + "=" + conn.getHeaderField(s));
}
}
if(DEBUG) System.out.println("==== Response Content =====");
BufferedReader br = new BufferedReader(new InputStreamReader(conn.getInputStream()));
String str = null;
StringBuilder sb = new StringBuilder();
while ((str = br.readLine()) != null) {
sb.append(str + System.getProperty("line.separator"));
if(DEBUG) System.out.println(str);
}
br.close();
return sb.toString();
}
이 세 줄을 주목하세요? 대답이 openConnection 방법 인 경우 요청을 이미 보낸 후에 쿠키를 설정할 수 있습니까? 대답이 인 경우 메서드를 연결하면 어떻게 될까요? 이 코드는 아래 내가 서버에서 응답을받을 수도 작동합니다 뜻이 URL가 참조하는 자원에의 통신 링크를 엽니 다()
이url = buldGetUrl(url, parameters);
if(DEBUG) System.out.println("[HTTP GET REQUEST]");
if(DEBUG) System.out.println(" URL: " + url);
HttpURLConnection conn = (HttpURLConnection) new URL(url).openConnection();
if(DEBUG) System.out.println("\n[HTTP GET RESPONSE]");
if(DEBUG) System.out.println("==== Response Headers =====");
String serverCookies = conn.getHeaderField("Set-Cookie");
if(serverCookies != null){
String[] cookies = serverCookies.split(";");
for(String s : cookies){
s = s.trim();
if(s.split("=")[0].equals("JSESSIONID")){
J_SESSION_ID = s.split("=")[1];
if(DEBUG) System.out.println(" Session ID Found: " + J_SESSION_ID);
break;
}
}
}
if(DEBUG){
for(String s : conn.getHeaderFields().keySet()){
if(s == null)
System.out.println(" " + conn.getHeaderField(s));
else
System.out.println(" " + s + "=" + conn.getHeaderField(s));
}
}
if(DEBUG) System.out.println("==== Response Content =====");
BufferedReader br = new BufferedReader(new InputStreamReader(conn.getInputStream()));
String str = null;
StringBuilder sb = new StringBuilder();
while ((str = br.readLine()) != null) {
sb.append(str + System.getProperty("line.separator"));
if(DEBUG) System.out.println(str);
}
br.close();
return sb.toString();
하지만 당신은 그것을 설명 할 방법에 대해 설명합니다. 두 번째 예제에서는 open() 메서드를 전혀 호출하지 않았지만 서버에서도 응답을 얻을 수 있습니다. – CaiNiaoCoder
@CaiNiaoCoder이 부분을보십시오 http://stackoverflow.com/questions/2151359/java-httpurlconnection-doesnt-connect-when-i-call-connect. 질문 주셔서 감사합니다. – vinoth