标签:
1、是什么?
是用来简化HTTP客户端与服务器进行各种通讯编程。
2、能做什么
简单说:用GET或POST请求,封装好规定格式的URI后,由httpclient执行该请求(execute),发送给服务器后,得到一个response。服务器的响应信息就存在response中。通过响应方法,得到你想要的那部分结果(如:头部信息,响应实体信息、状态行信息)
2.1. 读取网页(HTTP/HTTPS)内容
下面是我们给出的一个简单的例子用来访问某个页面(用post请求)
CloseableHttpClient httpclient = HttpClients.createDefault();
HttpPost httpPost = new HttpPost(服务器的目标URL);
httpPost.setEntity(new StringEntity(请求参数);
//response是执行post请求后,得到的服务器返回的响应信息
CloseableHttpResponse response = httpclient.execute(httpPost);
try {
HttpEntity entity = response.getEntity();
InputStream in= entity.getContent();
BufferedReader br = new BufferedReader(new InputStreamReader(in,"UTF-8"));
String
line;
StringBuffer buf= new StringBuffer();
while
(null != (line = br.readLine())) {
buf.append(line);
}
//获得响应头信息
System.out.println(response.getAllHeaders());
//响应实体
System.out.println(response.getEntity());
//响应状态行
System.out.println(response.getStatusLine());
} finally {
response.close();
}
}
在这个例子中首先创建一个HTTP客户端(HttpClient)的实例,然后选择提交的方法是GET或者POST,最后在HttpClient实例上执行提交的方法,最后从所选择的提交方法中读取服务器反馈回来的结果。这就是使用HttpClient的基本流程。其实用一行代码也就可以搞定整个请求的过程,非常的简单!
2.2模拟输入用户名和口令进行登录很多网站的内容都只是对注册用户可见的,这种情况下就必须要求使用正确的用户名和口令登录成功后,方可浏览到想要的页面。因为HTTP协议是无状态的,也就是连接的有效期只限于当前请求,请求内容结束后连接就关闭了。在这种情况下为了保存用户的登录信息必须使用到Cookie机制。以JSP/Servlet为例,当浏览器请求一个JSP或者是Servlet的页面时,应用服务器会返回一个参数,名为jsessionid(因不同应用服务器而异),值是一个较长的唯一字符串的Cookie,这个字符串值也就是当前访问该站点的会话标识。浏览器在每访问该站点的其他页面时候都要带上jsessionid这样的Cookie信息,应用服务器根据读取这个会话标识来获取对应的会话信息。
对于需要用户登录的网站,一般在用户登录成功后会将用户资料保存在服务器的会话中,这样当访问到其他的页面时候,应用服务器根据浏览器送上的Cookie中读取当前请求对应的会话标识以获得对应的会话信息,然后就可以判断用户资料是否存在于会话信息中,如果存在则允许访问页面,否则跳转到登录页面中要求用户输入帐号和口令进行登录。这就是一般使用JSP开发网站在处理用户登录的比较通用的方法。
这样一来,对于HTTP的客户端来讲,如果要访问一个受保护的页面时就必须模拟浏览器所做的工作,首先就是请求登录页面,然后读取Cookie值;再次请求登录页面并加入登录页所需的每个参数;最后就是请求最终所需的页面。当然在除第一次请求外其他的请求都需要附带上Cookie信息以便服务器能判断当前请求是否已经通过验证。说了这么多,可是如果你使用httpclient的话,你甚至连一行代码都无需增加,你只需要先传递登录信息执行登录过程,然后直接访问想要的页面,跟访问一个普通的页面没有任何区别,因为类HttpClient已经帮你做了所有该做的事情了,太棒了!下面的例子实现了这样一个访问的过程。
2.3上传下载文件
标签:
原文地址:http://blog.csdn.net/longwoniu/article/details/45007577