http请求,HttpClient,调用短信接口

项目中安全设置找回密码的功能,需要通过发送短信验证绑定手机,通过绑定的手机号验证并重新设置密码。

因为项目是通过maven管理的,所以需要在pom.xml文件中引入jar包,

maven引入的jar包:

        <!-- https://mvnrepository.com/artifact/commons-httpclient/commons-httpclient -->
        <dependency>
            <groupId>commons-httpclient</groupId>
            <artifactId>commons-httpclient</artifactId>
            <version>3.1</version>
        </dependency>

这里需要注意的是,因为但因版本兼容等原因,开始引入的并不是目前最新的 3.1 版本,而是比较老的2.*版本,这个版本没有设置字符类型的方法,所以只能用默认的字符类型发送数据,结果返回Fail,后来测试在没有汉字的判断时可以返回OK,又通过Postman查看:

因此确定时发送请求中汉字的问题,后来修改为最新的3.1版本之后设置字符串格式 “UTF-8”,可以正常发送请求并返回true。

发送请求的部分代码:

String info = null;  
            try{  
                HttpClient httpclient = new HttpClient();//方法调用  
                
                PostMethod post = new PostMethod("http://192.168.1.99:8088/sms/sendCode");//接口地址  
                
                post.getParams().setParameter(HttpMethodParams.HTTP_CONTENT_CHARSET,"UTF-8");//格式转换  
                
                post.addParameter("signName", "淄博**智能");
                post.addParameter("templateCode", "SMS_114600059");
                post.addParameter("expireTime", "300");
                post.addParameter("count", "4");
                post.addParameter("bizId", "learn");
                post.addParameter("phoneNumbers", list.get(0).getPhone());
                
                httpclient.executeMethod(post);  
                info = new String(post.getResponseBody(),"UTF-8"); 
                mav.addObject("apimsg",info);
            }catch (Exception e) {  
                e.printStackTrace();  
            }  

返回的OK发送请求成功,

返回的later发送过请稍后,

返回的Fail失败,之前没有设置字符编码类型是就是返回这样,

还有因为参数名写错提示的返回参事错误等等。

用户输入验证码判断是否正确:

HttpClient httpclient = new HttpClient();//方法调用  
            PostMethod post = new PostMethod("http://192.168.1.99:8088/sms/validCode");//接口地址  
            //这里没有设置字符编码,也可以通过,因为没有汉字
            post.addParameter("bizId", "learn");
            post.addParameter("code", pnum);
            post.addParameter("phoneNumber", "17560306966");
            httpclient.executeMethod(post); 
            
            info = new String(post.getResponseBody()); 

这里是根据输入的验证码判断是否正确,返回OK代表输入的验证码和发送的验证码一致。

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏ChaMd5安全团队

第二届红帽杯4Re + 1Pwn的writeup

通过加密函数的分组、及具体算法里的swap,mul,add我操作,看出是idea算法。

1282
来自专栏葡萄城控件技术团队

七天学会ASP.NET MVC (三)——ASP.Net MVC 数据处理

? 第三天我们将学习Asp.Net中数据处理功能,了解数据访问层,EF,以及EF中常用的代码实现方式,创建数据访问层和数据入口,处理Post数据,以及数据验...

32210
来自专栏向治洪

JSBridge深度剖析

概述 做过混合开发的人都知道Ionic和PhoneGap之类的框架,这些框架在web基础上包装一层Native,然后通过Bridge技术的js调用本地的库。 在...

3125
来自专栏重庆的技术分享区

在Apache反向代理的Linode上安装Jupyter Notebook Server

Jupyter Notebook是一个交互式增强型shell,可以在Web浏览器中运行。Notebook在数据科学家中很受欢迎,支持图形的在线渲染,导出为各种格...

1842
来自专栏MasiMaro 的技术博文

派遣函数

驱动程序的主要功能是用来处理IO请求,而大部分的IO请求是在派遣函数中完成的,用户模式下所有的IO请求都会被IO管理器封装为一个IRP结构,类似于Windows...

1361
来自专栏hotqin888的专栏

DOC文件中法规对标系统完成

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/hotqin888/article/det...

731
来自专栏xdecode

Java源码安全审查

最近业务需要出一份Java Web应用源码安全审查报告, 对比了市面上数种工具及其分析结果, 基于结果总结了一份规则库. 本文目录结构如下: 

6912
来自专栏Star先生的专栏

从源码中分析 Hadoop 的 RPC 机制

RPC是Remote Procedure Call(远程过程调用)的简称,这一机制都要面对两个问题:对象调用方式余与序列/反序列化机制。本文给大家介绍从源码中分...

6990
来自专栏芋道源码1024

熔断器 Hystrix 源码解析 —— 命令合并执行

本文主要基于 Hystrix 1.5.X 版本 1. 概述 2. HystrixCollapser 2.1 构造方法 2.2 执行命令方式 2.3 核心方法 3...

3787
来自专栏大内老A

WCF技术剖析之一:通过一个ASP.NET程序模拟WCF基础架构

细算起来,已经有好几个月没有真正的写过文章了。近半年以来,一直忙于我的第一本WCF专著《WCF技术剖析》的写作,一直无暇管理自己的Blog。到目前为止《WCF技...

2747

扫码关注云+社区

领取腾讯云代金券