zoukankan      html  css  js  c++  java
  • 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代表输入的验证码和发送的验证码一致。

  • 相关阅读:
    How to use my view helpers in my ActionMailer views?
    大败笔,状态机
    把程序进行上线部署调试了,
    支付接口心得
    rails3 正则路由
    linux下配置Mysql远程访问,不受ip限制
    ActionController::InvalidAuthenticityToken解决办法
    支付宝接口错误
    DHTML 中的绝对定位
    部署备份
  • 原文地址:https://www.cnblogs.com/jiangwz/p/8093389.html
Copyright © 2011-2022 走看看