HttpClient简介
HTTP 协议可能是现在 Internet 上使用得最多、最重要的协议了,越来越多的 Java 应用程序需要直接通过 HTTP 协议来访问网络资源。虽然在 JDK 的 java.net 包中已经提供了访问 HTTP 协议的基本功能,但是对于大部分应用程序来说,JDK 库本身提供的功能还不够丰富和灵活。HttpClient 是 Apache Jakarta Common 下的子项目,用来提供高效的、最新的、功能丰富的支持 HTTP 协议的客户端编程工具包,并且它支持 HTTP 协议最新的版本和建议。HttpClient 已经应用在很多的项目中,比如 Apache Jakarta 上很著名的另外两个开源项目 Cactus 和 HTMLUnit 都使用了 HttpClient。更多信息请关注
-
(1) GET方法
-
使用 HttpClient 需要以下 6 个步骤:
- 1. 创建 HttpClient 的实例2. 创建某种连接方法的实例,在这里是GetMethod。在 GetMethod 的中传入待连接的地址3. 调用第一步中创建好的实例的 execute 方法来执行第二步中创建好的 method 实例4. 读 response5. 释放连接。无论执行方法是否成功,都必须释放连接6. 对得到后的内容进行处理(2)POST方法根据RFC2616,对POST的解释如下:POST方法用来向目的服务器发出请求,要求它接受被附在请求后的实体,并把它当作(Request-Line)中请求URI所指定资源的附加新子项。POST被设计成用统一的方法实现下列功能:对现有资源的注释(Annotation of existing resources)向电子公告栏、,或类似讨论组发送消息提交,如将的结果提交给数据处理过程通过附加操作来扩展数据库调用HttpClient中的PostMethod与GetMethod类似,除了设置PostMethod的实例与GetMethod有些不同之外,剩下的步骤都差不多。在下面的例子中,省去了与GetMethod相同的步骤,只说明与上面不同的地方,并以登录BBS为例子进行说明。
HttpClient 功能介绍
以下列出的是 HttpClient 提供的主要的功能,要知道更多详细的功能可以参见 HttpClient 的主页。
-
实现了所有 HTTP 的方法(GET,POST,PUT,HEAD 等)
-
支持自动转向
-
支持 HTTPS 协议
-
支持代理服务器等
发送验证码:
@ResponseBody @PostMapping("/editphone") public OperationResult editPhone(String phone){ String info = null; try{ HttpClient httpclient = new HttpClient();//方法调用 PostMethod post = new PostMethod("*****");//接口地址 post.getParams().setParameter(HttpMethodParams.HTTP_CONTENT_CHARSET,"UTF-8");//格式转换 post.addParameter("signName", "****"); post.addParameter("templateCode", "****"); post.addParameter("expireTime", "300"); post.addParameter("count", "4"); post.addParameter("bizId", "***"); post.addParameter("phoneNumbers", phone); httpclient.executeMethod(post); info = new String(post.getResponseBody(),"UTF-8"); }catch (Exception e) { e.printStackTrace(); } return new OperationResult(true,"发送成功"); }
验证验证码是否正确
@ResponseBody @PostMapping("/editphone1") public OperationResult editPhone1(String phone,String pnum){ String info = null; try { HttpClient httpclient = new HttpClient();//方法调用 PostMethod post = new PostMethod(****");//接口地址 post.addParameter("bizId", "***"); post.addParameter("code", pnum); post.addParameter("phoneNumber", phone); httpclient.executeMethod(post); info = new String(post.getResponseBody()); }catch (Exception e) { e.printStackTrace(); } if("OK".equalsIgnoreCase(info)){ User u=new User(); u.setId(user.getId()); u.setPhone(phone); OperationResult c = userService.updatePhonr(u); return c ; } return new OperationResult(true,"chenggong"); }