Quand le témoin situé dans HttpURLConnection avec Java?
regardez ces code:
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();
}
veuillez noter que ces trois lignes:
HttpURLConnection conn = (HttpURLConnection) new URL(url).openConnection();
conn.setRequestProperty("Cookie","JSESSIONID=" + J_SESSION_ID);
conn.connect();
URL#openConnection et URL#connect, la méthode à envoyer la requête au serveur?
si la réponse est openConnection méthode, comment un témoin peut être réglé après une demande déjà été envoyé? si la réponse est connecter méthode, vous devinez quoi ? ces code ci-dessous fonctionne trop, je peux obtenir la réponse du serveur :
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();
OriginalL'auteur CaiNiaoCoder | 2011-11-23
Vous devez vous connecter pour publier un commentaire.
La méthode connect() Ouvre un lien de communication à la ressource référencée par cette URL, si un tel lien n'a pas déjà été créé. getInputStream(), getResponseCode(), ou getResponseMessage() va créer un lien de communication avec le serveur
Regardez cette sna stackoverflow.com/questions/2151359/... . Merci pour la question
OriginalL'auteur vinoth
Donc, en général, parler, #connect() est en fait superflu, chaque fois qu'une méthode de cette HttpURLConnection classe, qui est de la récupération d'une réponse de l'info (comme #getInputStream()/getResponseCode()/getHeaderFields()/etc.), est invoquée, implicite connecter réellement être fait. Suis-je le droit?
Ma compréhension est basée sur la discussion ci-dessous:
À l'aide de java.net.URLConnection à feu et à gérer les requêtes HTTP
OriginalL'auteur Roy Ling