Apache HttpClient - Chiusura della connessione
Se stai elaborando le risposte HTTP manualmente invece di utilizzare un gestore di risposte, devi chiudere da solo tutte le connessioni http. Questo capitolo spiega come chiudere manualmente le connessioni.
Durante la chiusura manuale delle connessioni HTTP, seguire i passaggi indicati di seguito:
Passaggio 1: creare un oggetto HttpClient
Il createDefault() metodo del HttpClients class restituisce un oggetto della classe CloseableHttpClient, che è l'implementazione di base dell'interfaccia HttpClient.
Usando questo metodo, crea un file HttpClient oggetto come mostrato di seguito -
CloseableHttpClient httpClient = HttpClients.createDefault();
Passaggio 2: avviare un blocco di prova finale
Avvia un blocco try-latest, scrivi il codice rimanente nei programmi nel blocco try e chiudi l'oggetto CloseableHttpClient nel blocco latest.
CloseableHttpClient httpClient = HttpClients.createDefault();
try{
//Remaining code . . . . . . . . . . . . . . .
}finally{
httpClient.close();
}
Passaggio 3: creare un oggetto HttpGetobject
Il HttpGet class rappresenta la richiesta HTTP GET che recupera le informazioni del server dato utilizzando un URI.
Creare una richiesta HTTP GET istanziando la classe HttpGet passando una stringa che rappresenta l'URI.
HttpGet httpGet = new HttpGet("http://www.tutorialspoint.com/");
Passaggio 4: eseguire la richiesta Get
Il execute() metodo del CloseableHttpClient oggetto accetta un file HttpUriRequest (interfaccia) oggetto (cioè HttpGet, HttpPost, HttpPut, HttpHead ecc.) e restituisce un oggetto risposta.
Esegui la richiesta utilizzando il metodo indicato -
HttpResponse httpResponse = httpclient.execute(httpGet);
Passaggio 5: avviare un altro tentativo (annidato)
Avvia un altro blocco try-latest (annidato nel precedente try-latest), scrivi il codice rimanente nei programmi in questo blocco try e chiudi l'oggetto HttpResponse nel blocco finalmente.
CloseableHttpClient httpclient = HttpClients.createDefault();
try{
. . . . . . .
. . . . . . .
CloseableHttpResponse httpresponse = httpclient.execute(httpget);
try{
. . . . . . .
. . . . . . .
}finally{
httpresponse.close();
}
}finally{
httpclient.close();
}
Esempio
Ogni volta che crei / ottieni oggetti come richiesta, flusso di risposta, ecc., Avvia un blocco di prova finalmente nella riga successiva, scrivi il codice rimanente all'interno di prova e chiudi il rispettivo oggetto nel blocco finale come mostrato nel programma seguente:
import java.util.Scanner;
import org.apache.http.client.methods.CloseableHttpResponse;
import org.apache.http.client.methods.HttpGet;
import org.apache.http.impl.client.CloseableHttpClient;
import org.apache.http.impl.client.HttpClients;
public class CloseConnectionExample {
public static void main(String args[])throws Exception{
//Create an HttpClient object
CloseableHttpClient httpclient = HttpClients.createDefault();
try{
//Create an HttpGet object
HttpGet httpget = new HttpGet("http://www.tutorialspoint.com/");
//Execute the Get request
CloseableHttpResponse httpresponse = httpclient.execute(httpget);
try{
Scanner sc = new Scanner(httpresponse.getEntity().getContent());
while(sc.hasNext()) {
System.out.println(sc.nextLine());
}
}finally{
httpresponse.close();
}
}finally{
httpclient.close();
}
}
}
Produzione
Quando si esegue il programma sopra, viene generato il seguente output:
<!DOCTYPE html>
<!--[if IE 8]><html class = "ie ie8"> <![endif]-->
<!--[if IE 9]><html class = "ie ie9"> <![endif]-->
<!--[if gt IE 9]><!-->
<html lang = "en-US"> <!--<![endif]-->
<head>
<!-- Basic -->
<meta charset = "utf-8">
<meta http-equiv = "X-UA-Compatible" content = "IE = edge">
<meta name = "viewport" content = "width = device-width,initial-scale = 1.0,userscalable = yes">
<link href = "https://cdn.muicss.com/mui-0.9.39/extra/mui-rem.min.css"
rel = "stylesheet" type = "text/css" />
<link rel = "stylesheet" href = "/questions/css/home.css?v = 3" />
<script src = "/questions/js/jquery.min.js"></script>
<script src = "/questions/js/fontawesome.js"></script>
<script src = "https://cdn.muicss.com/mui-0.9.39/js/mui.min.js"></script>
</head>
. . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . . . . . . .
<script>
window.dataLayer = window.dataLayer || [];
function gtag() {dataLayer.push(arguments);}
gtag('js', new Date());
gtag('config', 'UA-232293-17');
</script>
</body>
</html>