码迷,mamicode.com
首页 > Web开发 > 详细

httpclient快速入门

时间:2015-04-12 10:45:29      阅读:169      评论:0      收藏:0      [点我收藏+]

标签:

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上传下载文件






httpclient快速入门

标签:

原文地址:http://blog.csdn.net/longwoniu/article/details/45007577

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!