起步软件技术论坛
搜索
 找回密码
 注册

QQ登录

只需一步,快速开始

楼主: Masion

[分享] 利用WeX5给手机APP增加短信验证码功能

  [复制链接]

44

主题

81

帖子

232

积分

中级会员

Rank: 3Rank: 3

积分
232
QQ
发表于 2015-4-26 13:26:37 | 显示全部楼层
1.png



调试短信码程序,但是不能发手机发短信,
//前台
Model.prototype.saveUserBtnClick = function(event) {
       
                var userData = this.comp("userData");
                var params = {
                        "userData" : userData.toJson(true)
                };
                var success = function(resultData) {
                        userData.applyUpdates();
                        justep.Util.hint("用户信息保存成功");
                };
                Baas.sendRequest({
                        "url" : "/takeout",
                        "action" : "save",
                        "params" : params,
                        "success" : success
                });
               
        var paramsa = {
                                "fPhoneNumber"   : userData.val("fPhoneNumber")
                };
               
                 var successa = function(resultData)
      {
          //拿到从后台返回的验证码
          alert(resultData.CheckCode);
      };
                Baas.sendRequest({
                        "url" : "/takeout",
                        "action" : "DuanXinCheck",
                        "params" : paramsa,
                        "success" : successa
                });
                       
               
       
        };





//后台
private static void DuanXinCheck(ServletRequest request, ServletResponse response) throws SQLException, IOException, NamingException {
                // 参数序列化
                JSONObject params = (JSONObject) JSONObject.parse(request.getParameter("params"));
       
                                String fPhoneNumber = params.getString("fPhoneNumber");
                                System.out.println("bbbbbbbbbbb="+fPhoneNumber);
                       
                                //生成6位数字的随机字符串
                    int suiji = new Random().nextInt(899999)+100000;
                    String backStr=Integer.toString(suiji);
                    // 将随机字符串通过jsonOBJ返回前台
                    JSONObject jsonObj = new JSONObject();
                    jsonObj.put("CheckCode", backStr);
                     System.out.println("jhhjhkkkkllj="+backStr);
                    Util.writeJsonToResponse(response, jsonObj);
                
                  //把这个随机数发到短信平台de

                HttpClient client = new HttpClient();
                PostMethod post = new PostMethod("http://gbk.sms.webchinese.cn");
                //在头文件中设置转码
                post.addRequestHeader("Content-Type","application/x-www-form-urlencoded;charset=gbk");
                NameValuePair[] data ={ new NameValuePair("Uid", "wky1232001"),new NameValuePair("Key", "e348c6e239cee271c32a"),new NameValuePair("smsMob",fPhoneNumber),new NameValuePair("smsText","验证码:"+backStr+" (本信息由系统自动发出,不要回复)")};
                //这段Java代码是直接从他家demo拷贝下来的,只需要修改这句话,填写你在他家注册的用户名、短信密钥,参数中加要发送的手机号和验证码短信
                post.setRequestBody(data);
                try{
                                client.executeMethod(post);
                                Header[] headers = post.getResponseHeaders();
                                int statusCode = post.getStatusCode();
                                System.out.println("statusCode:"+statusCode);
                                for(Header h : headers)
                                {
                                        System.out.println(h.toString());
                                }
                                String result = new String(post.getResponseBodyAsString().getBytes("gbk"));
                                System.out.println(result); //打印返回消息状态

                }
                finally{
                                post.releaseConnection();

                }


               
        }

回复 支持 反对

使用道具 举报

33

主题

213

帖子

1158

积分

金牌会员

Rank: 6Rank: 6

积分
1158
QQ
发表于 2015-4-26 16:08:42 | 显示全部楼层
太牛了,收藏先
回复 支持 反对

使用道具 举报

44

主题

81

帖子

232

积分

中级会员

Rank: 3Rank: 3

积分
232
QQ
发表于 2015-4-27 11:26:51 | 显示全部楼层
Masion,你好!
   
  我想加你的QQ 67550351  能帮我远程看一下吗? 我的短信为什么发不过去。
回复 支持 反对

使用道具 举报

377

主题

2594

帖子

5117

积分

论坛元老

Rank: 8Rank: 8

积分
5117
QQ
 楼主| 发表于 2015-4-27 12:52:39 | 显示全部楼层
加我QQ的话,请在附加信息中注明: X5交流
没有任何附加说明的QQ是直接拒绝掉
长春鱼熊企业管理咨询有限公司



X5开发出入库培训视频
(出处: 起步论坛)
回复 支持 反对

使用道具 举报

44

主题

81

帖子

232

积分

中级会员

Rank: 3Rank: 3

积分
232
QQ
发表于 2015-4-27 16:27:16 | 显示全部楼层
Masion,你好!

   你的 利用WeX5给手机APP增加短信验证码的程序成功了吗? 我怎么做不成功,我单独这个程序都不行。

package com.justep.baas.test;
//import java.io.UnsupportedEncodingException;
import java.util.Random;

import org.apache.commons.httpclient.Header;
import org.apache.commons.httpclient.HttpClient;
import org.apache.commons.httpclient.NameValuePair;
import org.apache.commons.httpclient.methods.PostMethod;

import com.alibaba.fastjson.JSONObject;
public class TestDuanxin {
       
        public static void main(String[] args)throws Exception
        {


                //生成6位数字的随机字符串
        int suiji = new Random().nextInt(899999)+100000;
        String backStr=Integer.toString(suiji);
        // 将随机字符串通过jsonOBJ返回前台
        JSONObject jsonObj = new JSONObject();
        jsonObj.put("CheckCode", backStr);
         System.out.println("jhhjhkkkkllj="+backStr);
         
        HttpClient client = new HttpClient();
        PostMethod post = new PostMethod("http://gbk.sms.webchinese.cn");
        post.addRequestHeader("Content-Type","application/x-www-form-urlencoded;charset=gbk");//在头文件中设置转码
    NameValuePair[] data ={ new NameValuePair("Uid", "wky1232001"),new NameValuePair("Key", "e348c6e239cee271c32a"),new NameValuePair("smsMob","13999503313"),new NameValuePair("smsText","abc")};
        //NameValuePair[] data ={ new NameValuePair("Uid", "wky1232001"),new NameValuePair("Key", "e348c6e239cee271c32a"),new NameValuePair("smsMob","13999503313"),new NameValuePair("smsText","短信内容")};
        post.setRequestBody(data);

        client.executeMethod(post);
        Header[] headers = post.getResponseHeaders();
        int statusCode = post.getStatusCode();
        System.out.println("statusCode:"+statusCode);
        for(Header h : headers)
        {
        System.out.println(h.toString());
        }
        String result = new String(post.getResponseBodyAsString().getBytes("gbk"));
        System.out.println(result); //打印返回消息状态


        post.releaseConnection();

        }


}

   
  
回复 支持 反对

使用道具 举报

44

主题

81

帖子

232

积分

中级会员

Rank: 3Rank: 3

积分
232
QQ
发表于 2015-4-27 16:29:13 | 显示全部楼层
2.png
回复 支持 反对

使用道具 举报

44

主题

81

帖子

232

积分

中级会员

Rank: 3Rank: 3

积分
232
QQ
发表于 2015-4-27 17:51:59 | 显示全部楼层
如果在Servlet,加下面代码
HttpClient client = new HttpClient();
就提示 ,信息: Servlet X5 Baas Takeout Servlet is currently unavailable
难道 HttpServlet  和HttpClient 有冲突
回复 支持 反对

使用道具 举报

44

主题

81

帖子

232

积分

中级会员

Rank: 3Rank: 3

积分
232
QQ
发表于 2015-4-29 17:59:01 | 显示全部楼层
Masion:
     你好! 短接接口是用 HttpClient 发送短信得,而Wex5  3.1服务是HttpServlet,你是如何解决在servlet中使用HttpClient的问题的,在在servlet中使用HttpClient会出错。
回复 支持 反对

使用道具 举报

377

主题

2594

帖子

5117

积分

论坛元老

Rank: 8Rank: 8

积分
5117
QQ
 楼主| 发表于 2015-4-30 14:31:06 | 显示全部楼层
893586170x5 发表于 2015-4-29 17:59
Masion:
     你好! 短接接口是用 HttpClient 发送短信得,而Wex5  3.1服务是HttpServlet,你是如何解决 ...

没用到httpClient 可能你想多了
加我QQ:67550351 给你看一下
长春鱼熊企业管理咨询有限公司



X5开发出入库培训视频
(出处: 起步论坛)
回复 支持 反对

使用道具 举报

44

主题

81

帖子

232

积分

中级会员

Rank: 3Rank: 3

积分
232
QQ
发表于 2015-5-1 16:09:15 | 显示全部楼层
//  
package com.justep.baas.test;

import java.io.IOException;
import java.sql.Connection;
import java.sql.SQLException;
import java.text.ParseException;
import java.util.ArrayList;
import java.util.Collection;
import java.util.List;
import java.util.Random;

import javax.naming.NamingException;
import javax.servlet.ServletException;
import javax.servlet.ServletRequest;
import javax.servlet.ServletResponse;
import javax.servlet.http.HttpServlet;

import com.alibaba.fastjson.JSONObject;
//import com.justep.baas.data.Table;
//import com.justep.baas.data.Transform;
import com.justep.baas.data.Util;


import org.apache.commons.httpclient.Header;
import org.apache.commons.httpclient.HttpClient;
import org.apache.commons.httpclient.NameValuePair;
import org.apache.commons.httpclient.methods.PostMethod;


public class DxServlet extends HttpServlet {

        private static final long serialVersionUID = 1452041171629615961L;

       
        @Override
        // Servlet入口,通过判断action参数,进入各自对应的实现方法
        public void service(ServletRequest request, ServletResponse response) throws ServletException {
                try {
                        String action = request.getParameter("action");
                        if ("DuanXinCheck".equals(action)) {
                                DuanXinCheck(request, response);
                        }
                       
                } catch (Exception e) {
                        e.printStackTrace();
                        throw new ServletException(e);
                }
        }

         private static void DuanXinCheck(ServletRequest request, ServletResponse response) throws SQLException, IOException, NamingException , Exception{
                        JSONObject params = (JSONObject) JSONObject.parse(request.getParameter("params"));
                               
                                String fPhoneNumber = params.getString("fPhoneNumber");
                           //生成6位数字的随机字符串
                 int suiji = new Random().nextInt(899999)+100000;
                 String backStr=Integer.toString(suiji);
                 // 将随机字符串通过jsonOBJ返回前台
                 JSONObject jsonObj = new JSONObject();
                 jsonObj.put("CheckCode", backStr);
                 Util.writeJsonToResponse(response, jsonObj);

                 HttpClient client = new HttpClient();
                 PostMethod post = new PostMethod("http://gbk.sms.webchinese.cn");
                 post.addRequestHeader("Content-Type","application/x-www-form-urlencoded;charset=gbk");
                 //在头文件中设置转码
                 NameValuePair[] data ={ new NameValuePair("Uid", "wky12aa1"),new NameValuePair("Key", "eaassc6e239cee271c32a"),new NameValuePair("smsMob",fPhoneNumber ),new NameValuePair("smsText","验证码:"+backStr+" (本信息由系统自动发出,不要回复)")};

        //这段Java代码是直接从他家demo拷贝下来的,只需要修改这句话,填写你在他家注册的用户名、短信密钥,参数中加要发送的手机号和验证码短信
                 post.setRequestBody(data);
        try{
                 client.executeMethod(post);
                 Header[] headers = post.getResponseHeaders();
                 int statusCode = post.getStatusCode();
                 System.out.println("statusCode:"+statusCode);
                 for(Header h : headers)
                 {
                         System.out.println(h.toString());
                 }
                 String result = new String(post.getResponseBodyAsString().getBytes("gbk"));
                 System.out.println(result); //打印返回消息状态

        }
        finally{
                 post.releaseConnection();
                
        }
        System.out.println("gjhjkhkh="+fPhoneNumber);
       

                 }
         
}
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

小黑屋|手机版|X3技术论坛|Justep Inc.    

GMT+8, 2024-11-23 16:18 , Processed in 0.092978 second(s), 23 queries .

Powered by Discuz! X3.4

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表