本人开发的开发者技术变现资源聚集地,大家支持下,下面是网址

https://www.baiydu.com

今天找了几个短信平台,其实最想使用的一个是sharesdk,使用它上面http api短信功能,不仅价格低,而且最少可以充值100RMB,但是审核过于严格,对应APP还必须集成他们的短信功能,而且要上传审核也得20多天,我也只是想找个短信平台测试下而已,所以它就算了。然后就在百度随便在好了一个短信平台www.wasun.cn,暂时感觉它还不错,至少它给的测试帐号接受短信的速度没超过5秒,我看了下一般是3秒甚至更快。 下面我就说说调用短信接口的方法,以及使用中途遇到的问题。

一、httprequest方式请求方法

      他给的DOMO其实已经封装好方法的,是使用httpClient请求的,以前在.NET中使用过这个类, 而且.net中还直接有HttpWebRequest这个类,我看了下代码在java中它的功能应该是被封装到了URLConnection这个类里面,由于时间,封装的方法我也是从网上找的没深入研究,不过应该和.net中的HttpWebRequest是一个含义。下面贴代码,包括DEMO代的httpClient这个类的代码也一同贴上。

  1. package Helper;
  2.  
  3. import java.io.BufferedReader;
  4. import java.io.IOException;
  5. import java.io.InputStreamReader;
  6. import java.io.PrintWriter;
  7. import java.io.UnsupportedEncodingException;
  8. import java.net.URL;
  9. import java.net.URLConnection;
  10. import java.util.List;
  11. import java.util.Map;
  12.  
  13. public class HttpRequest {
  14. /**
  15. * 向指定URL发送GET方法的请求
  16. *
  17. * @param url
  18. * 发送请求的URL
  19. * @param param
  20. * 请求参数,请求参数应该是 name1=value1&name2=value2 的形式。
  21. * @return URL 所代表远程资源的响应结果
  22. */
  23. public static String sendGet(String url, String param) {
  24. String result = "";
  25. BufferedReader in = null;
  26.  
  27. try {
  28. String urlNameString = url + "?" + param;
  29. URL realUrl = new URL(urlNameString);
  30. // 打开和URL之间的连接
  31. URLConnection connection = realUrl.openConnection();
  32. // 设置通用的请求属性
  33. connection.setRequestProperty("accept", "*/*");
  34. connection.setRequestProperty("connection", "Keep-Alive");
  35. connection.setRequestProperty("user-agent",
  36. "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1;SV1)");
  37. // 建立实际的连接
  38. connection.connect();
  39. // 获取所有响应头字段
  40. Map<String, List<String>> map = connection.getHeaderFields();
  41. // 遍历所有的响应头字段
  42. for (String key : map.keySet()) {
  43. System.out.println(key + "--->" + map.get(key));
  44. }
  45. // 定义 BufferedReader输入流来读取URL的响应
  46. in = new BufferedReader(new InputStreamReader(
  47. connection.getInputStream()));
  48. String line;
  49. while ((line = in.readLine()) != null) {
  50. result += line;
  51. }
  52. } catch (Exception e) {
  53. System.out.println("发送GET请求出现异常!" + e);
  54. e.printStackTrace();
  55. }
  56. // 使用finally块来关闭输入流
  57. finally {
  58. try {
  59. if (in != null) {
  60. in.close();
  61. }
  62. } catch (Exception e2) {
  63. e2.printStackTrace();
  64. }
  65. }
  66. return result;
  67. }
  68.  
  69. /**
  70. * 向指定 URL 发送POST方法的请求
  71. *
  72. * @param url
  73. * 发送请求的 URL
  74. * @param param
  75. * 请求参数,请求参数应该是 name1=value1&name2=value2 的形式。
  76. * @return 所代表远程资源的响应结果
  77. */
  78. public static String sendPost(String url, String param) {
  79. PrintWriter out = null;
  80. BufferedReader in = null;
  81. String result = "";
  82. try {
  83. URL realUrl = new URL(url);
  84. // 打开和URL之间的连接
  85. URLConnection conn = realUrl.openConnection();
  86. // 设置通用的请求属性
  87. conn.setRequestProperty("accept", "*/*");
  88. conn.setRequestProperty("connection", "Keep-Alive");
  89. conn.setRequestProperty("user-agent",
  90. "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1;SV1)");
  91. // 发送POST请求必须设置如下两行
  92. conn.setDoOutput(true);
  93. conn.setDoInput(true);
  94. // 获取URLConnection对象对应的输出流
  95. out = new PrintWriter(conn.getOutputStream());
  96. // 发送请求参数
  97.  
  98. out.print(param);
  99. // flush输出流的缓冲
  100. out.flush();
  101. // 定义BufferedReader输入流来读取URL的响应
  102. in = new BufferedReader(
  103. new InputStreamReader(conn.getInputStream()));
  104. String line;
  105. while ((line = in.readLine()) != null) {
  106. result += line;
  107. }
  108. } catch (Exception e) {
  109. System.out.println("发送 POST 请求出现异常!"+e);
  110. e.printStackTrace();
  111. }
  112. //使用finally块来关闭输出流、输入流
  113. finally{
  114. try{
  115. if(out!=null){
  116. out.close();
  117. }
  118. if(in!=null){
  119. in.close();
  120. }
  121. }
  122. catch(IOException ex){
  123. ex.printStackTrace();
  124. }
  125. }
  126.  
  127. try {
  128. result= new String(result.getBytes("ISO8859-1"),"UTF-8");
  129. } catch (UnsupportedEncodingException e) {
  130. // TODO Auto-generated catch block
  131. e.printStackTrace();
  132. }
  133. return result;
  134. }
  135. }

二、官方DEMO httpClient方式请求代码

  1. //import java.io.FileInputStream;
  2. //import java.io.FileNotFoundException;
  3.  
  4. import java.io.IOException;
  5.  
  6. import org.apache.commons.httpclient.HttpClient;
  7. import org.apache.commons.httpclient.HttpException;
  8. import org.apache.commons.httpclient.NameValuePair;
  9. import org.apache.commons.httpclient.methods.PostMethod;
  10.  
  11. import org.dom4j.Document;
  12. import org.dom4j.DocumentException;
  13. import org.dom4j.DocumentHelper;
  14. import org.dom4j.Element;
  15.  
  16. public class sendsms {
  17.  
  18. private static String Url = "http://121.199.?.178/webservice/sms.php?method=Submit";
  19.  
  20. public static void main(String [] args) {
  21.  
  22. HttpClient client = new HttpClient();
  23. PostMethod method = new PostMethod(Url);
  24.  
  25. //client.getParams().setContentCharset("GBK");
  26. client.getParams().setContentCharset("UTF-8");
  27. method.setRequestHeader("ContentType","application/x-www-form-urlencoded;charset=UTF-8");
  28.  
  29. String content = new String("您的验证码是:7528。请不要把验证码泄露给其他人。");
  30.  
  31. NameValuePair[] data = {//提交短信
  32. new NameValuePair("account", "用户名"),
  33. new NameValuePair("password", "密码"), //密码可以使用明文密码或使用32位MD5加密
  34. //new NameValuePair("password", util.StringUtil.MD5Encode("密码")),
  35. new NameValuePair("mobile", "手机号码"),
  36. new NameValuePair("content", content),
  37. };
  38.  
  39. method.setRequestBody(data);
  40.  
  41. try {
  42. client.executeMethod(method);
  43.  
  44. String SubmitResult =method.getResponseBodyAsString();
  45.  
  46. //System.out.println(SubmitResult);
  47.  
  48. Document doc = DocumentHelper.parseText(SubmitResult);
  49. Element root = doc.getRootElement();
  50.  
  51. String code = root.elementText("code");
  52. String msg = root.elementText("msg");
  53. String smsid = root.elementText("smsid");
  54.  
  55. System.out.println(code);
  56. System.out.println(msg);
  57. System.out.println(smsid);
  58.  
  59. if(code == "2"){
  60. System.out.println("短信提交成功");
  61. }
  62.  
  63. } catch (HttpException e) {
  64. // TODO Auto-generated catch block
  65. e.printStackTrace();
  66. } catch (IOException e) {
  67. // TODO Auto-generated catch block
  68. e.printStackTrace();
  69. } catch (DocumentException e) {
  70. // TODO Auto-generated catch block
  71. e.printStackTrace();
  72. }
  73.  
  74. }
  75.  
  76. }

三、调用封装的httprequest代码

  1. String phoneMessageParameter=new String("account=?&password=wxhdcs@456&content=您的校验码是:【变量】。请不要把校验码泄露给其他人。&mobile=?&stime=2012-08-01%208:20:23&sign=?&type=pt&extno=");
  2. String returnResult=HttpRequest.sendPost("http://121.?.16.178/webservice/sms.php?method=Submit", phoneMessageParameter);
  3. out.println("<script> alert("+returnResult+");</script>");

如果使用这个平台要注意下,就是他官方的文档中的参数名是错的,发的DEMO中才是正确的,还有他的接口是用webserver写的,返回的不是json或则XML数据,而是一个标准的html页面,然后需要的内容都写在html中的标签中, 如果是测试content短信内容这个参数必须写他们规定的,否则报错,如果正式购买可以自己定模版内容。

本人创业做的一款androidApp, 下载量已经有2000多万,各种当前热门的网络手机奖励红包全部集成,另外还有热门电影和淘宝高额优惠券!很适合各类型的用户。

 

java servlet手机app访问接口(二)短信验证的更多相关文章

  1. java servlet手机app访问接口(一)数据加密传输验证

    前面几篇关于servlet的随笔,算是拉通了 servlet的简单使用流程,接下去的文章将主要围绕手机APP访问接口这块出发续写,md5加密传输--->短信验证--->手机推送---> ...

  2. java servlet手机app访问接口(三)高德地图云存储及检索

    这篇关于高德地图的随笔内容会多一点, 一.业务说明     对应APP业务中的成员有两类,一是服务人员,二是被服务人员,  主要实现功能, 对APP中的服务人员位置进行时时定位, 然后通过被服务人员登 ...

  3. java servlet手机app访问接口(四)推送

    一. 服务端DEMO下载及运行. 登录友盟后,浏览器直接输入下面这个URL,直接进入文档开发和DEMO下载页面:http://dev.umeng.com/push/ios/integration(下面 ...

  4. 注册登录页面修订-Python使用redis-手机验证接口-发送短信验证

    登录页面修订 views.Login.vue <template> <div class="login box"> <img src="@/ ...

  5. Java之HttpClient调用WebService接口发送短信源码实战

    摘要 Java之HttpClient调用WebService接口发送短信源码实战 一:接口文档 二:WSDL 三:HttpClient方法 HttpClient方法一 HttpClient方法二 Ht ...

  6. 在网页程序或Java程序中调用接口实现短信猫收发短信的解决方案

    方案特点: 在网页程序或Java程序中调用接口实现短信猫收发短信的解决方案,简化软件开发流程,减少各应用系统相同模块的重复开发工作,提高系统稳定性和可靠性. 基于HTTP协议的开发接口 使用特点在网页 ...

  7. java实现利用httpclient访问接口

    HTTP协议时Internet上使用的很多也很重要的一个协议,越来越多的java应用程序需要通过HTTP协议来访问网络资源. HTTPClient提供的主要功能: 1.实现了所有HTTP的方法(GET ...

  8. 利用阿里大于接口发短信(Delphi版)

    阿里大于是阿里通信旗下产品,融合了三大运营商的通信能力,提供包括短信.语音.流量直充.私密专线.店铺手机号等个性化服务.每条四分五,价钱还算公道,经老农测试,响应速度非常快,基本上是秒到.官方文档提供 ...

  9. java短信验证和注册

    最近公司需要用到短信验证注册,所以申请了阿里云的短信服务.我的项目是分布式的spring boot 原理: 利用第三方发送短信 获取回执消息,然后存入缓存里面 将用户填写的验证码与缓存里面的验证码对比 ...

随机推荐

  1. Andrew Ng机器学习公开课笔记 -- Regularization and Model Selection

    网易公开课,第10,11课 notes,http://cs229.stanford.edu/notes/cs229-notes5.pdf   Model Selection 首先需要解决的问题是,模型 ...

  2. 移动端基于HTML模板和JSON数据的JavaScript交互

    写本文之前,我正在做一个基于Tab页的订单中心: 每点击一个TAB标签,会请求对应状态的订单列表.之前的项目,我会在js里使用 +  连接符连接多个html内容: var html = ''; htm ...

  3. Node.js入门:异步IO

    异步IO     在操作系统中,程序运行的空间分为内核空间和用户空间.我们常常提起的异步I/O,其实质是用户空间中的程序不用依赖内核空间中的I/O操作实际完成,即可进行后续任务. 同步IO的并行模式 ...

  4. ECMAScript5中数组的方法

    1.forEach()方法 遍历数组,为每个数组元素调用指定函数,三个参数分别为:数组元素 item.元素索引 index.数组本身 arr,无返回值 例: 2.map()方法 调用数组的每个元素传递 ...

  5. salesforce 零基础学习(二十九)Record Types简单介绍

    在项目中我们可能会遇见这种情况,不同的Profile拥有不同的页面,页面中的PickList标签可能显示不同的值.这个时候,使用Record Types可以很便捷的搞定需求. Record Types ...

  6. 在忘记root密码的情况下如何修改linux系统的root密码

    1.系统启动时长按shift键后可以看到如下界面:     2.找到 recovery mode 那一行, 按下[e]键进入命令编辑状态,到 linux /boot/vmlinuz-....... r ...

  7. OpenCascade BRep Format Description (2)

    OpenCascade BRep Format Description eryar@163.com 摘要Abstract:本文结合OpenCascade的BRep格式描述文档和源程序,对BRep格式进 ...

  8. 【原创】Matlab.NET混合编程技巧之找出Matlab内置函数

                  本博客所有文章分类的总目录:[总目录]本博客博文总目录-实时更新    Matlab和C#混合编程文章目录 :[目录]Matlab和C#混合编程文章目录 Matlab与.N ...

  9. C#搭建足球赛事资料库与预测平台(1) 基本介绍

            本博客所有文章分类的总目录:[总目录]本博客博文总目录-实时更新 开源C#彩票数据资料库系列文章总目录:[目录]C#搭建足球赛事资料库与预测平台与彩票数据分析目录 去年4月到现在,一年 ...

  10. easyui-datagrid行数据field原样输出html标签

    easyui-datagrid 绑定的行 field 原样输出html标签.处理效果如图: Html页面代码如下: ... <tr> <th field="id" ...