HttpClient 关闭连接
如果您手动处理 HTTP 响应而不是使用响应处理程序,则需要自行关闭所有 http 连接。本章介绍如何手动关闭连接。
手动关闭 HTTP 连接时,请按照以下步骤操作
1)创建一个HttpClient对象
HttpClients类的createDefault()方法返回类CloseableHttpClient的对象,它是 HttpClient 接口的基本实现。
使用此方法,创建一个HttpClient对象,如下所示
CloseableHttpClient httpClient = HttpClients.createDefault();
2)创建一个try-finally代码块
创建一个 try-finally 块,在 try 块中编写程序中的剩余代码,并在 finally 块中关闭 CloseableHttpClient 对象。
CloseableHttpClient httpClient = HttpClients.createDefault();
try{
//Remaining code . . . . . . . . . . . . . . .
}finally{
httpClient.close();
}
3)创建一个HttpGet对象
上述HTTPGET类表示检索使用URI给定服务器的信息的HTTP GET请求。
通过传递表示 URI 的字符串来实例化 HttpGet 类,从而创建 HTTP GET 请求。
HttpGet httpGet = new HttpGet("http://www.yiidian.com/");
4)执行Get请求
CloseableHttpClient对象的execute()方法接受一个 HttpUriRequest (interface) 对象(即 HttpGet、HttpPost、HttpPut、HttpHead 等)并返回一个响应对象。
使用给定的方法执行请求
HttpResponse httpResponse = httpclient.execute(httpGet);
5)创建另一个try-finally代码块
创建另一个 try-finally 块(嵌套在前一个 try-finally 中),在这个 try 块中编写程序中的剩余代码并关闭 finally 块中的 HttpResponse 对象。
CloseableHttpClient httpclient = HttpClients.createDefault();
try{
. . . . . . .
. . . . . . .
CloseableHttpResponse httpresponse = httpclient.execute(httpget);
try{
. . . . . . .
. . . . . . .
}finally{
httpresponse.close();
}
}finally{
httpclient.close();
}
HttpClient关闭连接的例子
每当您创建/获取请求、响应流等对象时,请在下一行创建 try finally 块,在 try 中写入剩余代码并在 finally 块中关闭相应对象,如下面的程序所示:
package com.yiidian;
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;
import java.util.Scanner;
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.yiidian.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();
}
}
}
输出结果为:
热门文章
优秀文章