一、理解:
1.定义: HttpClient 是Apache Jakarta Common 下的子项目,可以用来提供高效的、最新的、功能丰富的支持 HTTP 协议的客户端编程工具包,并且它支持 HTTP 协议最新的版本和建议。简单的说:HttpClient是支持Http协议的客户端编程工具包,能够用来得到某个网页的源码
2.创建步骤:
a.创建HttpClient对象
b. 创建请求方法的实例,并指定请求URL。Get请求对应的是HttpGet,post请求对应的是HttpPOST。
c.用HttpClient对象中的execute方法来执行b步骤中的请求方法的实例用来发送请求
d.获得相应内容并打印出来
e.关闭连接,释放资源。无论执行方法是否成功,都必须执行执行此步骤
二、实例
//使用get方法来得到所提供的的URL中的网页源码
public static void getMethod(String url) throws Exception
{
//创建默认的HttpClient实例
CloseableHttpClient httpclient = HttpClients.createDefault();
try
{
//创建请求方法的实例,并指定请求URL,此条语句发送的是Get请求
HttpGet httpGet = new HttpGet(url);
//execute()发送请求
CloseableHttpResponse response = httpclient.execute(httpGet);
try
{
//打印响应状态
System.out.println(response.getStatusLine());
//获得服务器的响应内容(响应实体)
HttpEntity entity = response.getEntity();
//打印响应内容
System.out.println(EntityUtils.toString(entity));
} finally
{
response.close();
}
} finally
{
httpclient.close(); //关闭连接,释放资源
}
}
//从网络上下载一张图片
public static boolean download(String url, String fileName)
{
try
{
Content con1 = Request.Get(url).execute().returnContent();
File file = new File(fileName);
//写文件
FileOutputStream outputStream = new FileOutputStream(file);
InputStream inputStream = con1.asStream(); //读文件
//以每次读取1024个字节流的形式来读取出来,并写入fileName中(其实就是一个复制的过程)
byte b[] = new byte[1024];
int j = 0;
while ((j = inputStream.read(b)) != -1)
{
outputStream.write(b, 0, j);
}
outputStream.flush(); //及时将复制的内容发送出去
outputStream.close();
} catch (ClientProtocolException e)
{
e.printStackTrace();
return false;
} catch (IOException e)
{
e.printStackTrace();
return false;
}
return true;
}
//主函数测试
public static void main(String[] args) throws Exception
{
//获得Baidu首页的源码
getMethod("http://www.baidu.com");
//不用调用方法,直接获得百度首页源码,更为简洁、方便
Content content = Request.Get("http://www.baidu.com").execute().returnContent();
System.out.print(content.toString());
//下载网络上面的图片
String url = "https://img3.doubanio.com/lpic/s28668834.jpg";
download(url, "D://njupt0817.jpg"); //指定存放地点并重置名字
}