-
java调用webservice接口案例,service调用webservice接口
2020-11-19 10:28:51java调用webservice接口案例,精简,service调用webservice接口案例;不用生成一堆代码,逻辑清晰 -
调用WebService接口
2017-11-23 18:25:24执行execute()方法,设置url等参数,调用WebService接口。 public class TestWebService{ //执行调用WebService的业务逻辑,参数url是webservice接口的完整url,arg1是传递的参数,page分页参数 private static ...执行execute()方法,设置url等参数,调用WebService接口。
public class TestWebService{ //执行调用WebService的业务逻辑,参数url是webservice接口的完整url,arg1是传递的参数,page分页参数 private static InputStream callWebService(String url, String arg1) throws Exception { InputStream is = null; 创建HttpClient对象用于执行设置的post请求 HttpClient client = new HttpClient(); //定义post对象,传入请求的url PostMethod method = new PostMethod(url); //设置请求主机地址 method.setRequestHeader("Host", "www.xxx.com"); //设置请求内容的格式和编码 method.setRequestHeader("Content-Type", "text/xml; charset=utf-8"); //设置请求传递的参数 if (StringUtils.isNotEmpty(arg1)) { method.setParameter("arg1", arg1); } try { //执行请求 client.executeMethod(method); //获取响应流 is = method.getResponseBodyAsStream(); } catch (Exception e) { e.printStackTrace(); } finally { //释放连接 method.releaseConnection(); try { if (is != null) { is.close(); } } catch (IOException e) { e.printStackTrace(); } } return is; } //用于将获取的响应流转化为字符串 public static String convertStreamToString(InputStream is) { BufferedReader reader = new BufferedReader(new InputStreamReader(is)); StringBuilder sb = new StringBuilder(); String line = null; try { while ((line = reader.readLine()) != null) { sb.append(line + "\n"); } } catch (IOException e) { e.printStackTrace(); } finally { try { is.close(); } catch (IOException e) { e.printStackTrace(); } } return sb.toString(); } //调用WebService接口 public void execute(){ //传递给接口的参数 private String arg1="test"; //定义输入流用于获取调用WebService接口获取的数据 InputStream inputStream = null; try { inputStream = callWebService("http://www.xxx.com/xxx/xxx.asmx?xx=xxx",arg1, ""); String a = convertStreamToString(inputStream); } catch (Exception e) { e.printStackTrace(); } finally { try { if (inputStream != null) { inputStream.close(); } } catch (Exception e) { e.printStackTrace(); } } } }
-
调用webService接口
2020-04-03 16:42:14java调用webservice接口 三种方法 原创 哈啰沃尔の 最后发布于2018-09-05 17:40:42 阅读数 52798 收藏 展开 摘自其它:webservice的 发布一般都是使用WSDL(web service descriptive language)文件的样式来发布的,...java调用webservice接口 三种方法
原创 哈啰沃尔の 最后发布于2018-09-05 17:40:42 阅读数 52798 收藏
展开摘自其它:webservice的 发布一般都是使用WSDL(web service descriptive language)文件的样式来发布的,在WSDL文件里面,包含这个webservice暴露在外面可供使用的接口。今天搜索到了非常好的 webservice provider列表
http://www.webservicex.net/WCF/default.aspx
这上面列出了70多个包括很多方面的free webservice provider,utilities->global weather就可以获取全球的天气预报。
直接粘贴代码:
方法一:直接AXIS调用远程的web service
public void doSelectRiskReportForm(HttpServletRequest request, HttpServletResponse response){ //调用接口 //方法一:直接AXIS调用远程的web service try { String endpoint = "http://localhost:8080/platform-jxcx-service/services/settlementServiceImpl?wsdl"; Service service = new Service(); Call call = (Call) service.createCall(); call.setTargetEndpointAddress(endpoint); String parametersName = "settle_num"; // 参数名//对应的是 public String printWord(@WebParam(name = "settle_num") String settle_num); // call.setOperationName("printWord"); // 调用的方法名//当这种调用不到的时候,可以使用下面的,加入命名空间名 call.setOperationName(new QName("http://jjxg_settlement.platform.bocins.com/", "printWord"));// 调用的方法名 call.addParameter(parametersName, XMLType.XSD_STRING, ParameterMode.IN);//参数名//XSD_STRING:String类型//.IN入参 call.setReturnType(XMLType.XSD_STRING); // 返回值类型:String String message = "123456789"; String result = (String) call.invoke(new Object[] { message });// 远程调用 System.out.println("result is " + result); } catch (Exception e) { System.err.println(e.toString()); } }
方法二:直接SOAP调用远程的webservice
这个方法我没有试验,需要下载jar,SOAP 使用 HTTP 传送 XML,尽管HTTP 不是有效率的通讯协议,而且 XML 还需要额外的文件解析(parse),两者使得交易的速度大大低于其它方案。但是XML 是一个开放、健全、有语义的讯息机制,而 HTTP 是一个广泛又能避免许多关于防火墙的问题,从而使SOAP得到了广泛的应用。但是如果效率对你来说很重要,那么你应该多考虑其它的方式,而不要用 SOAP。
import org.apache.soap.util.xml.*; import org.apache.soap.*; import org.apache.soap.rpc.*; import java.io.*; import java.net.*; import java.util.Vector; public class caService { public static String getService(String user) { URL url = null; try { url = new URL( "http://192.168.0.100:8080/ca3/services/caSynrochnized"); } catch (MalformedURLException mue) { return mue.getMessage(); } // This is the main SOAP object Call soapCall = new Call(); // Use SOAP encoding soapCall.setEncodingStyleURI(Constants.NS_URI_SOAP_ENC); // This is the remote object we're asking for the price soapCall.setTargetObjectURI("urn:xmethods-caSynrochnized"); // This is the name of the method on the above object soapCall.setMethodName("getUser"); // We need to send the ISBN number as an input parameter to the method Vector soapParams = new Vector(); // name, type, value, encoding style Parameter isbnParam = new Parameter("userName", String.class, user, null); soapParams.addElement(isbnParam); soapCall.setParams(soapParams); try { // Invoke the remote method on the object Response soapResponse = soapCall.invoke(url, ""); // Check to see if there is an error, return "N/A" if (soapResponse.generatedFault()) { Fault fault = soapResponse.getFault(); String f = fault.getFaultString(); return f; } else { // read result Parameter soapResult = soapResponse.getReturnValue(); // get a string from the result return soapResult.getValue().toString(); } } catch (SOAPException se) { return se.getMessage(); } } }
方法三:直接使用eclipse生成客户端.idea类同
以天气预报的为例:
http://www.webxml.com.cn/WebServices/WeatherWebService.asmx?wsdl
在页面上直接Ctrl+s保存文件,把xml改成wsdl就行
然后复制到项目里.
webservice服务是需要引入axis的jar包的,如下图:
使用eclipse自动生成WSDL客户端代码
如果没有引入saaj-*.jar,可能会报错。
右键点击WeatherWebService.wsdl文件,找到Web Service项,点击Generate Client子菜单。如下图:
使用eclipse自动生成WSDL客户端代码
在弹出的窗口中点击Next,如下图:
使用eclipse自动生成WSDL客户端代码
选择生成的代码要防止的包位置,如下图:
使用eclipse自动生成WSDL客户端代码
点击完成,稍等片刻,就能看到生成的Java代码了。如下图:
使用eclipse自动生成WSDL客户端代码
生成客户端后,只需要在使用的时候,引入这个接口即可,就好像使用本地类一样.
补充:在使用方式一时遇到几个问题
1.Message part settlementService was not recognized.
解决方式:消息部分未被识别。
其实就是就是方法名错了,如果只输入方法名不行,就加入命名空间
// call.setOperationName(“printWord”); // 调用的方法名//当这种调用不到的时候,可以使用下面的,加入命名空间名
call.setOperationName(new QName(“http://jjxg_settlement.platform.bocins.com/”, “printWord”));// 调用的方法名
2.Unexpected wrapper element printWord found. Expected {http://jjxg_settlement.platform.bocins.com/}printWord.解决方式:
Call call = (Call) service.createCall();
call.setOperationName(new QName(“命名空间地址”, “方法名”));3.Unmarshalling Error: 意外的元素 (uri:“http://jjxg_settlement.platform.bocins.com/”, local:“settle_num”)。所需元素为<{}settle_num>
解决方式:
call.addParameter(parametersName, XMLType.XSD_STRING, ParameterMode.IN);//参数名//XSD_STRING:String类型//.IN入参
// 参数名//对应的是 public String printWord(@WebParam(name = “settle_num”) String settle_num);
实际走过的弯路:
命名空间的名称,缺少了"/"
call.setOperationName(new QName(“http://jjxg_settlement.platform.bocins.com/”, “printWord”));// 调用的方法名
-
调用webservice接口
2019-10-18 15:57:37调用webservice接口 JDK jdk生成客户端 在jdk 的bin目录下执行 wsimport -keep http://…wsdl 2.cxf 安装cxf,在cxf的bin目录下执行命令 wsdl2java -p 放置的位置file -d http://…wsdl 3,eclispe 编译器生成...调用webservice接口
- JDK
jdk生成客户端 在jdk 的bin目录下执行
wsimport -keep http://…wsdl2.cxf
安装cxf,在cxf的bin目录下执行命令
wsdl2java -p 放置的位置file -d http://…wsdl
3,eclispe 编译器生成客户端
新建项目工程,生成webservice客户端
-
Java调用WebService接口实现发送手机短信验证码功能,java 手机验证码,WebService接口调用
2014-06-25 15:27:40近来由于项目需要,需要用到手机短信验证码的功能,其中最主要的是用到了第三方提供的短信平台接口WebService客户端接口,下面我把我在项目中用到的记录一下,以便给大家提供个思路,由于本人的文采有限,还请大家...近来由于项目需要,需要用到手机短信验证码的功能,其中最主要的是用到了第三方提供的短信平台接口WebService客户端接口,下面我把我在项目中用到的记录一下,以便给大家提供个思路,由于本人的文采有限,还请大家见谅!
一:首先上几张案例截图,以便大家可以了解一下短信验证码的流程,这里我在做的过程中也参考了很多网站的短信验证码,比如:58同城,汽车之家等。
1.点击获取验证码之前的样式:
2.输入正确的手机号后点击获取验证码之后的样式:
3.如果手机号已经被注册的样式:
4.如果一个手机号一天发送超过3次就提示不能发送:
二:前台的注册页面的代码:reg.jsp
<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%> <%@taglib prefix="s" uri="/struts-tags"%> <%@page import="cn.gov.csrc.base.action.FindAllData"%> <% String path = request.getContextPath(); String basePath = request.getScheme() + "://" + request.getServerName() + ":" + request.getServerPort() + path + "/"; %> <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> <html> <head> <base href="<%=basePath%>"> <title>中国证券会证券期货违法违规举报中心-注册</title> <meta http-equiv="pragma" content="no-cache"> <meta http-equiv="cache-control" content="no-cache"> <meta http-equiv="expires" content="0"> <meta http-equiv="keywords" content="keyword1,keyword2,keyword3"> <meta http-equiv="description" content="This is my page"> <link rel="shortcut icon" type="image/x-icon" href="<%=request.getContextPath()%>/images/favicon.ico" /> <link rel="stylesheet" type="text/css" href="<%=request.getContextPath()%>/css/main.css"> <link href="<%=request.getContextPath()%>/formValidator1/style/validator.css" rel="stylesheet" type="text/css" /> <style type="text/css"> button { background: #F0F0F0 repeat-x; padding-top: 3px; border-top : 1px solid #708090; border-right: 1px solid #708090; border-bottom: 1px solid #708090; border-left: 1px solid #708090; width: auto; line-height: 12pt; font-size : 10pt; cursor: hand; font-size: 10pt; border-top: 1px solid #708090; } </style> <script src="<%=request.getContextPath()%>/js/jquery-1.7.2.min.js" type="text/javascript"></script> <script src="<%=request.getContextPath()%>/formValidator1/formValidator-4.0.1.js" type="text/javascript"></script> <script src="<%=request.getContextPath()%>/formValidator1/formValidatorRegex.js" type="text/javascript"></script> <script src="<%=request.getContextPath()%>/js/register.js" type="text/javascript"></script> <script src="<%=request.getContextPath()%>/js/sms.js" type="text/javascript"></script> <script type="text/javascript"> function changeCheckNum() { var checkNumImage_ = document.getElementById("checkNumImage"); checkNumImage_.src = "${pageContext.request.contextPath}/image.jsp?timeStamp="+ new Date().getTime(); } </script> <script type="text/javascript"> var msg = "${message}"; if (msg != "") { alert(msg); } </script> </head> <body> <%@include file="/statics/top.jspf"%> <div class="center_division"> <div class="center_body"> <div class="center_menu"> <font color="#000000">当前位置:</font> <a href="<%=request.getContextPath()%>/statics/reg.jsp"><font color="#000000">用户注册</font></a> </div> </div> <div class="center_body_menu"> <s:form action="RegisterAction_register" id="form1" name="form1" method="post" namespace="/"> <table id="tb"> <tr> <td colspan="3" align="center" bgcolor="#DDDFE1">举报人基本信息</td> </tr> <tr> <td align="center" width="30%"> <img src="images/new_reg_xing.gif"/>用户名:</td> <td align="center" width="40%"> <s:textfield name="username" id="username" cssStyle="width:160px;height:24px;" onblur="checkusername()"/> </td> <td align="left" width="30%"> <span id="usernameTip"> <s:fielderror cssStyle="color:red;padding-left:10px;"> <s:param>username</s:param> </s:fielderror> </span> </td> </tr> <tr> <td align="center" width="30%"><img src="images/new_reg_xing.gif"/>登录密码:</td> <td align="center" width="40%"> <s:password name="password" id="password" cssStyle="width:160px;height:24px;" onblur="checkpassword()"/> </td> <td align="left" width="30%"> <span id="passwordTip"> <s:fielderror cssStyle="color:red;padding-left:10px;"> <s:param>password</s:param> </s:fielderror> </span> </td> </tr> <tr> <td align="center" width="30%"><img src="images/new_reg_xing.gif"/>确认密码:</td> <td align="center" width="40%"> <s:password name="passwordRepeat" id="passwordRepeat" cssStyle="width:160px;height:24px;" onblur="checkpasswrodb()"/> </td> <td align="left" width="30%"> <span id="passwordRepeatTip"> <s:fielderror cssStyle="color:red;padding-left:10px;"> <s:param>passwordRepeat</s:param> </s:fielderror> </span> </td> </tr> <tr> <td align="center" width="30%"><img src="images/new_reg_xing.gif"/>姓 名:</td> <td align="center" width="40%"> <s:textfield name="nickname" id="nickname" cssStyle="width:160px;height:24px;" onblur="checknickname()"/> </td> <td align="left" width="30%"> <span id="nicknameTip"> <s:fielderror cssStyle="color:red;padding-left:10px;"> <s:param>nickname</s:param> </s:fielderror> </span> </td> </tr> <tr> <td align="center" width="30%">性 别:</td> <td align="center" width="40%"> <s:radio list="#application.dataMap.get('10001')" name="jbSex" cssStyle="height:24px;"/> </td> <td align="left" width="30%"></td> </tr> <tr> <td align="center" width="30%">联系地址:</td> <td align="center" width="40%"> <s:textfield name="jbAddress" id="jbAddress" cssStyle="width:160px;height:24px;" /> </td> <td align="left" width="30%"> <span id="jbAddressTip"> <s:fielderror cssStyle="color:red;padding-left:10px;"> <s:param>jbAddress</s:param> </s:fielderror> </span> </td> </tr> <tr> <td align="center" width="30%"><img src="images/new_reg_xing.gif"/>联系手机:</td> <td align="center" width="40%"> <s:textfield id="jbPhone" name="jbPhone" cssStyle="width:160px;height:24px;" onblur="checkjbPhone()"/> </td> <td align="left" width="30%"> <span id="jbPhoneTip"> <s:fielderror cssStyle="color:red;padding-left:10px;"> <s:param>jbPhone</s:param> </s:fielderror> </span> </td> </tr> <tr> <td align="center"><img src="images/new_reg_xing.gif"/>短信验证码:</td> <td align="left" colspan="2" style="padding-left: 112px;"> <s:textfield id="SmsCheckCode" name="SmsCheckCode" cssStyle="width:80px;height:24px;" maxLength="6" /> <span><input type="button" id="btnSendCode" name="btnSendCode" value="免费获取验证码" onclick="sendMessage()" /></span> <span id="SmsCheckCodeTip"> <s:fielderror cssStyle="color:red;padding-left:10px;"> <s:param>SmsCheckCodeTip</s:param> </s:fielderror> </span> </td> </tr> <tr> <td align="center" width="30%"><img src="images/new_reg_xing.gif"/>证件类型:</td> <td align="center" width="40%"> <s:select list="#application.dataMap.get('10002')" label="" headerKey="" headerValue="--请选择--" value="1" listValue="value" onchange="enableCredentialsCode(this)" name="jbCredentialsName" id="jbCredentialsName" cssStyle="width:160px;height:24px;"/> </td> <td align="left" width="30%"> <s:fielderror cssStyle="color:red;padding-left:10px;"> <s:param>jbCredentialsName</s:param> </s:fielderror> </td> </tr> <tr> <td align="center" width="30%"><img src="images/new_reg_xing.gif"/>证件号码:</td> <td align="center" width="40%"> <s:textfield name="jbCredentialsCode" id="jbCredentialsCode" cssStyle="width:160px;height:24px;" onblur="checkjbCredentialsCode()"/> </td> <td align="left" width="30%"> <span id="jbCredentialsCodeTip"> <s:fielderror cssStyle="color:red;padding-left:10px;"> <s:param>jbCredentialsCode</s:param> </s:fielderror> </span> </td> </tr> <tr> <td align="center" width="30%">单位名称:</td> <td align="center" width="40%"> <s:textfield name="jbCompanyName" id="jbCompanyName" cssStyle="width:160px;height:24px;" /> </td> <td align="left" width="30%"> <span id="jbCompanyNameTip"> <s:fielderror cssStyle="color:red;padding-left:10px;"> <s:param>jbCompanyName</s:param> </s:fielderror> </span> </td> </tr> <tr> <td align="center" width="30%"><img src="images/new_reg_xing.gif"/>所在地区:</td> <td align="center" width="40%"> <s:select list="#application.dataMap.get('10003')" label="" headerKey="" headerValue="--请选择--" listKey="key" cssStyle="width:160px;height:24px;" listValue="value" id="jbSourceArea" name="jbSourceArea" onblur="checkjbSourceArea()"/> </td> <td align="left" width="30%"> <span id="jbSourceAreaTip"> <s:fielderror cssStyle="color:red;padding-left:10px;"> <s:param>jbSourceArea</s:param> </s:fielderror> </span> </td> </tr> <tr> <td align="center" width="30%"> <img src="images/new_reg_xing.gif"/>验证码:</td> <td align="center" width="40%"> <s:textfield id="checkNum" name="checkNum" cssStyle="width:60px;height:24px;" onblur="checkNumber()" maxLength="4"/> <img id="checkNumImage" src="${pageContext.request.contextPath}/image.jsp"> <a onClick="changeCheckNum()" title="点击换一张" style="cursor:hand;"> 换一张</a> </td> <td align="left" width="30%"> <span id="checkNumTip"> <s:fielderror cssStyle="color:red;padding-left:10px;"> <s:param>checkNumTip</s:param> </s:fielderror> </span> </td> </tr> <tr> <td colspan="3" style="vertical-align: top; padding-top: 5px;padding-bottom: 5px;"> <input type="submit" value="注册" style="width:50px; height:24px;"/> <input type="reset" value="重置" style="width:50px; height:24px;"/> </td> </tr> </table> </s:form> </div> </div> <%@include file="/common/buttom.jspf"%> </body> </html>
三:前台获取短信验证码的js:sms.jsvar InterValObj; //timer变量,控制时间 var count = 120; //间隔函数,1秒执行 var curCount;//当前剩余秒数 var code = ""; //验证码 var codeLength = 6;//验证码长度 function sendMessage() { curCount = count; var jbPhone = $("#jbPhone").val(); var jbPhoneTip = $("#jbPhoneTip").text(); if (jbPhone != "") { if(jbPhoneTip == "√ 该手机号码可以注册,输入正确" || jbPhoneTip == "√ 短信验证码已发到您的手机,请查收"){ // 产生验证码 for ( var i = 0; i < codeLength; i++) { code += parseInt(Math.random() * 9).toString(); } // 设置button效果,开始计时 $("#btnSendCode").attr("disabled", "true"); $("#btnSendCode").val("请在" + curCount + "秒内输入验证码"); InterValObj = window.setInterval(SetRemainTime, 1000); // 启动计时器,1秒执行一次 // 向后台发送处理数据 $.ajax({ type: "POST", // 用POST方式传输 dataType: "text", // 数据格式:JSON url: "UserAction_sms.action", // 目标地址 data: "jbPhone=" + jbPhone +"&code=" + code, error: function (XMLHttpRequest, textStatus, errorThrown) { }, success: function (data){ data = parseInt(data, 10); if(data == 1){ $("#jbPhoneTip").html("<font color='#339933'>√ 短信验证码已发到您的手机,请查收</font>"); }else if(data == 0){ $("#jbPhoneTip").html("<font color='red'>× 短信验证码发送失败,请重新发送</font>"); }else if(data == 2){ $("#jbPhoneTip").html("<font color='red'>× 该手机号码今天发送验证码过多</font>"); } } }); } }else{ $("#jbPhoneTip").html("<font color='red'>× 手机号码不能为空</font>"); } } //timer处理函数 function SetRemainTime() { if (curCount == 0) { window.clearInterval(InterValObj);// 停止计时器 $("#btnSendCode").removeAttr("disabled");// 启用按钮 $("#btnSendCode").val("重新发送验证码"); code = ""; // 清除验证码。如果不清除,过时间后,输入收到的验证码依然有效 }else { curCount--; $("#btnSendCode").val("请在" + curCount + "秒内输入验证码"); } } $(document).ready(function() { $("#SmsCheckCode").blur(function() { var SmsCheckCodeVal = $("#SmsCheckCode").val(); // 向后台发送处理数据 $.ajax({ url : "UserAction_checkCode.action", data : {SmsCheckCode : SmsCheckCodeVal}, type : "POST", dataType : "text", success : function(data) { data = parseInt(data, 10); if (data == 1) { $("#SmsCheckCodeTip").html("<font color='#339933'>√ 短信验证码正确,请继续</font>"); } else { $("#SmsCheckCodeTip").html("<font color='red'>× 短信验证码有误,请核实后重新填写</font>"); } } }); }); });
四:验证码用户名和手机号码的js:register.js
//去掉前后空格 function trim(str) { var strnew = str.replace(/^\s*|\s*$/g, ""); return strnew; } //用户名 function checkusername() { var username = document.form1.username.value; if (username == "" || !isNaN(username.charAt(0))) { document.getElementById("usernameTip").innerHTML = "<font color='red'>× 首字母不能为数字或者用户名不能为空</font>"; return false; } else if (username.length < 6 || username.length > 30) { document.getElementById("usernameTip").innerHTML = "<font color='red'>× 用户名长度为6-30位字符</font>"; return false; } else { document.getElementById("usernameTip").innerHTML = "<font color='#339933'>√ 用户名合格</font>"; // 向后台发送处理数据 $.ajax({ url : "UserAction_checkUserName.action",// 目标地址 data : {username : username}, // 目标参数 type : "POST", // 用POST方式传输 dataType : "text", // 数据格式:text success : function(data) { data = parseInt(data, 10); if (data != 0) { $("#usernameTip").html("<font color='red'>× 该用户名已经被注册,请重新输入</font>"); } else { $("#usernameTip").html("<font color='#339933'>√ 该用户名可以注册,输入正确</font>"); } } }); return true; } } // 登录密码 function checkpassword() { var password = document.form1.password.value; if (password.length < 6 || password.length > 30) { document.getElementById("passwordTip").innerHTML = "<font color='red'>× 密码长度不能小于6位,大于30位</font>"; return false; } else if (!isNaN(password)) { document.getElementById("passwordTip").innerHTML = "<font color='red'>× 密码不能全是数字</font>"; return false; } else { document.getElementById("passwordTip").innerHTML = "<font color='#339933'>√ 密码合格</font>"; return true; } } // 确认密码 function checkpasswrodb() { var password = document.form1.password.value; var passwordRepeat = document.form1.passwordRepeat.value; if (trim(password) != trim(passwordRepeat)) { document.getElementById("passwordRepeatTip").innerHTML = "<font color='red'>× 两次密码输入必须一致</font>"; return false; } else { document.getElementById("passwordRepeatTip").innerHTML = "<font color='#339933'>√ 密码输入一致</font>"; return true; } } // 姓名 function checknickname() { var nickname = document.form1.nickname.value; if (trim(nickname) == "") { document.getElementById("nicknameTip").innerHTML = "<font color='red'>× 姓名不能为空</font>"; return false; } else { document.getElementById("nicknameTip").innerHTML = "<font color='#339933'>√ 姓名输入正确</font>"; return true; } } // 联系手机(ajax验证手机号码是否已经存在) function checkjbPhone() { var jbPhone = document.form1.jbPhone.value; var re= /(^1[3|5|8][0-9]{9}$)/; if (trim(jbPhone) == "") { document.getElementById("jbPhoneTip").innerHTML = "<font color='red'>× 手机号码不能为空</font>"; return false; } else if(trim(jbPhone) != ""){ if(!re.test(jbPhone)){ document.getElementById("jbPhoneTip").innerHTML = "<font color='red'>× 请输入有效的手机号码</font>"; return false; }else{ document.getElementById("jbPhoneTip").innerHTML = "<font color='#339933'>√ 手机号码输入正确</font>"; // 向后台发送处理数据 $.ajax({ url : "UserAction_checkPhone.action",// 目标地址 data : {jbPhone : jbPhone}, // 目标参数 type : "POST", // 用POST方式传输 dataType : "text", // 数据格式:text success : function(data) { data = parseInt(data, 10); if (data != 0) { $("#jbPhoneTip").html("<font color='red'>× 该手机号码已经被注册,请重新输入</font>"); } else { $("#jbPhoneTip").html("<font color='#339933'>√ 该手机号码可以注册,输入正确</font>"); } } }); return true; } } } // 证件号码 function checkjbCredentialsCode() { var jbCredentialsCode = document.form1.jbCredentialsCode.value; var reg = /(^\d{15}$)|(^\d{18}$)|(^\d{17}(\d|X|x)$)/; if (trim(jbCredentialsCode) == "") { document.getElementById("jbCredentialsCodeTip").innerHTML = "<font color='red'>× 证件号码不能为空</font>"; return false; } else if(trim(jbCredentialsCode) != ""){ if(!reg.test(jbCredentialsCode)){ document.getElementById("jbCredentialsCodeTip").innerHTML = "<font color='red'>× 请输入合法的证件号码</font>"; return false; }else{ document.getElementById("jbCredentialsCodeTip").innerHTML = "<font color='#339933'>√ 证件号码输入正确</font>"; // 向后台发送处理数据 $.ajax({ url : "UserAction_checkCredentialsCode.action",// 目标地址 data : {jbCredentialsCode : jbCredentialsCode}, // 目标参数 type : "POST", // 用POST方式传输 dataType : "text", // 数据格式:text success : function(data) { data = parseInt(data, 10); if (data != 0) { $("#jbCredentialsCodeTip").html("<font color='red'>× 该证件号码已经被注册,请重新输入</font>"); } else { $("#jbCredentialsCodeTip").html("<font color='#339933'>√ 该证件号码可以注册,输入正确</font>"); } } }); return true; } } } // 所在地区 function checkjbSourceArea() { var jbSourceArea = document.form1.jbSourceArea.value; if (trim(jbSourceArea) == "") { document.getElementById("jbSourceAreaTip").innerHTML = "<font color='red'>× 请选择所在地区</font>"; return false; } else { document.getElementById("jbSourceAreaTip").innerHTML = "<font color='#339933'>√ 所在地区选择正确</font>"; return true; } } // 验证码 function checkNumber() { var checkNum = document.form1.checkNum.value; if (trim(checkNum) == "") { document.getElementById("checkNumTip").innerHTML = "<font color='red'>× 验证码不能为空</font>"; return false; } else { document.getElementById("checkNumTip").innerHTML = "<font color='#339933'>√ 验证码合格</font>"; // 向后台发送处理数据 $.ajax({ url : "UserAction_checkNum.action",// 目标地址 data : {checkNum : checkNum}, // 目标参数 type : "POST", // 用POST方式传输 dataType : "text", // 数据格式:text success : function(data) { data = parseInt(data, 10); if (data != 0) { $("#checkNumTip").html("<font color='red'>× 验证码错误</font>"); } else { $("#checkNumTip").html("<font color='#339933'>√ 验证码正确</font>"); } } }); return true; } }
五:后台action的代码:UserAction.java(这里只是调用了我们的第三方给提供的客户端代码的发送短信的方法,如果是调用其他的短信平台,可以换成他们的发送短信的方法,这里只是给大家做个参考)
package cn.gov.csrc.base.systemmanager.action; import java.io.IOException; import java.io.PrintWriter; import java.util.List; import javax.annotation.Resource; import javax.servlet.http.HttpServletResponse; import org.apache.log4j.Logger; import org.apache.struts2.convention.annotation.Action; import org.apache.struts2.convention.annotation.Result; import org.apache.struts2.convention.annotation.Results; import org.springframework.context.annotation.Scope; import org.springframework.security.authentication.encoding.MessageDigestPasswordEncoder; import org.springframework.security.core.context.SecurityContextHolder; import org.springframework.stereotype.Controller; import cn.gov.csrc.base.action.BaseAction; import cn.gov.csrc.base.log.service.LogService; import cn.gov.csrc.base.report.util.CommonUtil; import cn.gov.csrc.base.report.util.Env; import cn.gov.csrc.base.systemmanager.model.Count; import cn.gov.csrc.base.systemmanager.model.User; import cn.gov.csrc.base.systemmanager.service.CountService; import cn.gov.csrc.base.systemmanager.service.UserService; import cn.gov.csrc.base.util.WebContextUtil; import com.sms.webservice.client.SmsReturnObj; import com.sms.webservice.client.SmsWebClient; /** * File: UserAction.java * Author: jiangsai * Version: 1.1 * Date: 04/17/2013 * Modify: * Description:用户 * Copyright csrc */ @Controller() @Scope("prototype") @Results({ @Result(name = "success", location = "/statics/report.jsp"), @Result(name = "modifyPassword", location = "/statics/modifyPassword.jsp") }) public class UserAction extends BaseAction<User> { private static final long serialVersionUID = 1214696686677691191L; private static Logger log = Logger.getLogger(UserAction.class); private static final String url = Env.getInstance().getProperty("url"); private static final String userName = Env.getInstance().getProperty( "username"); private static final String passWord = Env.getInstance().getProperty( "password"); private Integer id; private String username;// 用户名 private String password;// 密码 private String passwordRepeat;// 确认密码 private String jbPhone;//手机号码 private String jbCredentialsCode;//身份证号码 private String checkNum;//图片验证码 private String newPassword; private String confirmPassword; private Integer[] ownRoleIds; private UserService userService; private CountService countService; private LogService logService; private Count count = new Count(); public Integer getId() { return id; } public void setId(Integer id) { this.id = id; } public String getUsername() { return username; } public void setUsername(String username) { this.username = username; } public String getPassword() { return password; } public void setPassword(String password) { this.password = password; } public String getPasswordRepeat() { return passwordRepeat; } public void setPasswordRepeat(String passwordRepeat) { this.passwordRepeat = passwordRepeat; } public String getJbPhone() { return jbPhone; } public void setJbPhone(String jbPhone) { this.jbPhone = jbPhone; } public String getJbCredentialsCode() { return jbCredentialsCode; } public void setJbCredentialsCode(String jbCredentialsCode) { this.jbCredentialsCode = jbCredentialsCode; } public String getCheckNum() { return checkNum; } public void setCheckNum(String checkNum) { this.checkNum = checkNum; } public Integer[] getOwnRoleIds() { return ownRoleIds; } public void setOwnRoleIds(Integer[] ownRoleIds) { this.ownRoleIds = ownRoleIds; } public String getNewPassword() { return newPassword; } public void setNewPassword(String newPassword) { this.newPassword = newPassword; } public String getConfirmPassword() { return confirmPassword; } public void setConfirmPassword(String confirmPassword) { this.confirmPassword = confirmPassword; } @Resource public void setUserService(UserService userService) { this.userService = userService; } public UserService getUserService() { return userService; } @Resource public void setCountService(CountService countService) { this.countService = countService; } public CountService getCountService() { return countService; } public LogService getLogService() { return logService; } @Resource public void setLogService(LogService logService) { this.logService = logService; } public Count getCount() { return count; } public void setCount(Count count) { this.count = count; } public void prepareToUpdatePage() { model = userService.getEntity(id); } /** * 用户登录 * * @return success */ @Action(value = "UserAction_login") public String login() { Object u = SecurityContextHolder.getContext().getAuthentication().getPrincipal(); if (u instanceof User && u != null) { WebContextUtil.getSession().setAttribute("user", u); User user = (User)u; //使用数据库表TBL_BASE_LOG添加用户登录的日志信息 logService.saveTblBaseLog(WebContextUtil.getRequest(),"当前操作人【"+user.getNickname()+"】登录系统"); } else { // 防止绕过登陆页面直接执行Action return "login"; } return SUCCESS; } /** * 用户密码更新 */ @Action(value = "UserAction_updateUser") public String updateUser() { if (!newPassword.equals(confirmPassword)) { this.setMessage("新密码与确认密码不一致!"); return "modifyPassword"; } User u = (User) SecurityContextHolder.getContext().getAuthentication().getPrincipal(); MessageDigestPasswordEncoder encoder = new MessageDigestPasswordEncoder("md5"); String psw = encoder.encodePassword(newPassword, null); userService.modifyPassword(u, psw); this.setMessage("保存成功!"); return "modifyPassword"; } /** * 验证用户名是否存在 * * @throws Exception */ @Action(value = "UserAction_checkUserName") public void checkUserName(){ String result = "0"; try { List<User> list = userService.findUserByUserName(username); if(list != null && list.size() > 0){ result = "1"; }else{ result = "0"; } HttpServletResponse response = WebContextUtil.getResponse(); response.setContentType("application/json;charset=UTF-8"); response.setHeader("Cache-Control", "no-cache"); PrintWriter out = response.getWriter(); out.write(result.toString()); } catch (IOException e) { throw new RuntimeException("验证身份证号码出错", e); } } /** * 验证原始密码是否正确 * * @throws Exception */ @Action(value = "UserAction_checkPassWord") public void checkPassWord() throws Exception { String result = "0"; MessageDigestPasswordEncoder encoder = new MessageDigestPasswordEncoder("md5"); String pwd = encoder.encodePassword(password, null); List<User> user = userService.findUserByPassWord(pwd); if (user != null && user.size() > 0) { result = "1"; }else{ result = "0"; } HttpServletResponse response = WebContextUtil.getResponse(); response.setContentType("application/json;charset=UTF-8"); response.setHeader("Cache-Control", "no-cache"); PrintWriter out = response.getWriter(); out.write(result.toString()); } /** * 验证手机号码是否存在 */ @Action(value = "UserAction_checkPhone") public void checkPhone(){ String result = "0"; try { List<User> list = userService.findUserByPhone(jbPhone); if(list != null && list.size() > 0){ result = "1"; }else{ result = "0"; } HttpServletResponse response = WebContextUtil.getResponse(); response.setContentType("application/json;charset=UTF-8"); response.setHeader("Cache-Control", "no-cache"); PrintWriter out = response.getWriter(); out.write(result.toString()); } catch (IOException e) { throw new RuntimeException("验证手机号码出错", e); } } /** * 验证身份证号码是否存在 */ @Action(value = "UserAction_checkCredentialsCode") public void checkCredentialsCode(){ String result = "0"; try { List<User> list = userService.findUserByCredentialsCode(jbCredentialsCode); if(list != null && list.size() > 0){ result = "1"; }else{ result = "0"; } HttpServletResponse response = WebContextUtil.getResponse(); response.setContentType("application/json;charset=UTF-8"); response.setHeader("Cache-Control", "no-cache"); PrintWriter out = response.getWriter(); out.write(result.toString()); } catch (IOException e) { throw new RuntimeException("验证身份证号码出错", e); } } /** * 验证验证码是否正确 */ @Action(value = "UserAction_checkNum") public void checkNum(){ try { String result = "0"; String check_number_key = (String)WebContextUtil.getSession().getAttribute("CHECK_NUMBER_KEY"); if(checkNum != check_number_key && !checkNum.equals(check_number_key)){ result = "1"; }else{ result = "0"; } HttpServletResponse response = WebContextUtil.getResponse(); response.setContentType("application/json;charset=UTF-8"); response.setHeader("Cache-Control", "no-cache"); PrintWriter out = response.getWriter(); out.write(result.toString()); } catch (IOException e) { throw new RuntimeException("验证验证码出错", e); } } /** * 验证短信验证码是否正确 * * @throws Exception */ @Action(value = "UserAction_checkCode") public void checkCode() throws Exception{ String result = "0"; /** 获取手动输入的手机短信验证码 */ String SmsCheckCode = WebContextUtil.getRequest().getParameter("SmsCheckCode"); /** 获取session中存放的手机短信验证码 */ String code = (String) WebContextUtil.getSession().getAttribute("code"); try { if(SmsCheckCode != code && !SmsCheckCode.equals(code)){ result = "0"; }else{ result = "1"; } } catch (Exception e) { throw new RuntimeException("短信验证失败", e); } HttpServletResponse response = WebContextUtil.getResponse(); response.setContentType("application/json;charset=UTF-8"); response.setHeader("Cache-Control", "no-cache"); PrintWriter out = response.getWriter(); out.write(result.toString()); } /** * 验证手机短信是否发送成功 * * @throws Exception */ @Action(value = "UserAction_sms") public void sms() throws Exception { String result = "0"; /** 手机号码 */ String jbPhone = WebContextUtil.getRequest().getParameter("jbPhone"); /** 短信验证码 */ String code = WebContextUtil.getRequest().getParameter("code"); /** 短信验证码存入session(session的默认失效时间30分钟) */ WebContextUtil.getSession().setAttribute("code", code); /** 如何初始化失败返回 */ if(!initClient()) { return; } /** 单个手机号发送短信的方法的参数准备 */ // 手机号码 String mobilephone = jbPhone; // 短信内容+随机生成的6位短信验证码 String content = "根据中国证监会举报中心委托,特向您发送此条短信。您的注册验证码为:" + code; // 操作用户的ID Integer operId = Integer.parseInt(Env.getInstance().getProperty("operId")); // 定时发送的的发送时间(缺省为空,如果即时发送,填空) String tosend_time = ""; // 应用系统的短信ID,用户查询该短信的状态报告(缺省为0,即不需查询短信的状态报告) int sms_id = 0; // 黑名单过滤(0:不需要黑名单过滤,1:需要黑名单过滤,缺省为0) short backlist_filter = 0; // 禁止语过滤(0:不需要禁止语过滤,1:需要禁止语过滤,缺省为0) short fbdword_filter = 0; // 优先级(值越大优先级越高,0:普通,1,:优先,2:最高,缺省为0) short priority = 0; // 短信有效时间(格式为:YYYY-MM-DD HH:mm:ss目前为空) String valid_time = ""; /** 发送短信之前先统计一个已经发送的短信条数 */ int messageCount = countService.findAllRecord(mobilephone); log.info("已发短信条数为:" +messageCount); if(messageCount < 5){ /** 单个手机号发送短信 */ if (!sendMessage(mobilephone, content, operId, tosend_time, sms_id, backlist_filter, fbdword_filter, priority, valid_time)) { result = "0";// 失败 } else { result = "1";// 成功 /** 发送一条短信,记录一条短信记录,为了方便之后的统计短信发送次数 */ count.setPhone(mobilephone);// 手机号码 count.setCaptcha(code);// 短信验证码 count.setSendTime(CommonUtil.getNowDate());// 短信发送时间 if(count != null){ countService.saveEntity(count); log.info("短信验证码发送记录保存成功!"); } } }else{ result = "2";//一个手机号码最多发送5条短信验证码 log.info("该手机号码今天发送验证码过多"); } HttpServletResponse response = WebContextUtil.getResponse(); response.setContentType("application/json;charset=UTF-8"); response.setHeader("Cache-Control", "no-cache"); PrintWriter out = response.getWriter(); out.write(result.toString()); } /** * WebService客户端初始化 * */ public static boolean initClient() { /** * 判断客户端是否已经初始化 */ if (!SmsWebClient.enable()) { int ret = 0; try { ret = SmsWebClient.init(url, userName, passWord); if (ret == -1 || !SmsWebClient.enable()) { log.info("短信平台接口初始化失败!"); return false; } log.info("短信平台接口初始化成功!" + ret + "-----"); } catch (Exception ex) { ex.printStackTrace(); log.info("短信平台接口初始化过程中异常!"); } } return true; } /** * 单个手机号码发送 * * @param mobilephone * 手机号 * @param content * 短信内容 * @param operId * 操作用户的ID * @param tosend_time * 定时发送的发送时间 * @param sms_id * 应用系统的短信ID * @param backlist_filter * 黑名单过滤 * @param fbdword_filter * 禁止语过滤 * @param priority * 优先级 * @param valid_time * 短信有效时间 */ public static boolean sendMessage(java.lang.String mobilephone, java.lang.String content, int operId, java.lang.String tosend_time, int sms_id, short backlist_filter, short fbdword_filter, short priority, java.lang.String valid_time) { // 单个手机号码发送 try { SmsReturnObj retObj = SmsWebClient.webSendMessage(mobilephone, content, operId, tosend_time, sms_id, backlist_filter, fbdword_filter, priority, valid_time); if (retObj.getReturnCode() != 1) { log.info("短信发送失败,原因为:" + retObj.getReturnMsg()); return false; } else { log.info("短信发送成功!返回结果为:" + retObj.getReturnMsg()); return true; } } catch (Exception ex) { ex.printStackTrace(); log.info("短信发送过程发生异常!"); } return true; } }
六:具体的短信接口demo到这里下,这里你下载了也不能成功的发送短信,因为你必须要短信平台商给你提供:url,userName,passWord,operId,以及短信平台商还要绑定你的外网ip地址,这样才能真正的发送短信。
Demo下载链接: http://pan.baidu.com/s/1qWt1Qdm
原文:http://www.zuidaima.com/share/1881657001233408.htm
七:最后,如果有小伙伴在学习的过程中有问题,可以添加楼主微信,楼主会尽量抽时间帮你解决遇到的问题;
八:如果还是没解决,可以加入QQ交流群讨论解决:
-
.net调用webservice接口例子
2017-09-26 12:57:28.net调用webservice接口例子.net调用webservice接口例子.net调用webservice接口例子.net调用webservice接口例子 -
python调用WEBSERVICE接口
2017-07-12 09:28:50python调用WEBSERVICE接口 -
JAVA调用WEBSERVICE接口
2017-07-12 09:25:47JAVA调用WEBSERVICE接口 -
JAVA调用WEBSERVICE接口.zip
2018-07-09 10:22:26JAVA调用WEBSERVICE接口.zipJAVA调用WEBSERVICE接口.zip -
java调用webservice_使用Apache CXF调用webservice接口
2020-11-14 05:01:58最近在RestCloud平台中调用webservice时遇到以下问题,总结记录下:RestCloud 企业级API混合集成中台www.restcloud.cnApache CXF调用webservice接口可以有两种方式实现: 一是动态调用webservice即不用生成客户端... -
C#调用WebService接口
2013-10-23 19:05:33C#调用WebService接口 -
java调用webservice接口_java如何调用webservice接口?
2021-02-12 10:34:54展开全部Java通过WSDL文件来调用webservice直接调用模式如下:import java.util.Date;import java.text.DateFormat;import org.apache.axis.client.Call;import org.apache.axis.client.Service;import javax.xml.... -
cmd 调用webservice接口_Java调用webservice接口方法
2020-12-21 11:04:36webservice的 发布一般都是使用WSDL(web service descriptive language)文件的样式来发布的,在WSDL文件里面,包含这个webservice暴露在外面可供使用的接口。我们也可以在以下网站找到许多 webservice provider列表... -
Java调用WebService接口的方法
2020-09-03 22:55:38主要介绍了Java调用WebService接口的方法,实例分析了有参方法Add的使用技巧,需要的朋友可以参考下 -
android调用webservice接口获取信息
2020-08-28 21:09:04主要为大家详细介绍了android调用webservice接口获取信息,具有一定的参考价值,感兴趣的小伙伴们可以参考一下 -
Python调用WebService接口
2020-09-13 12:07:23Python调用WebService接口 刚接触一个工作项目,需要用python调用java开发的第三方WebService接口。 导入模块 python使用suds模块来调用WebService接口进行开发 from suds.client import Client #导入suds客户端... -
PHP使用SOAP调用WEBSERVICE接口
2017-07-12 09:22:03PHP使用SOAP调用WEBSERVICE接口 -
C++调用webservice接口
2013-12-17 18:59:17详细的解说了C++调用webservice接口! -
C#调用WebService接口和创建WebService接口
2020-08-27 15:14:42调用WebService接口 对于初学者来说,在vs2012环境中,大家有可能不知道Web References文件夹是如何来的,它是通过右击项目,选择其中的”添加服务引用“,如图所示: 之后,得到”添加服务引用“的页面,我也把... -
java调用webService接口
2020-06-01 14:25:50java调用webService接口 添加链接描述 -
cmd 调用webservice接口_Java 调用WebService 接口
2021-01-13 00:34:43把这堆代码粘到项目里, 开始正式调用 书写调用代码: 一般生成的代码里有一个工厂类, 工厂类的文件名和接口的部分URL一致, 如BarService.java, 实例化这个工厂, 再从这个工厂中获取包含可返回数据的方法.1 2 3... -
vue 调用webservice_动态调用WebService接口的几种方式
2020-12-18 23:42:59这里就不再赘述了,想要了解的====》传送门二、为什么要动态调用WebService接口?一般在C#开发中调用webService服务中的接口都是通过引用过来就行调用的,步骤如下:1.找到引用,右击添加服务引用,找到高级,添加... -
Python调用WebService接口实例说明
2016-09-26 14:12:49Python调用WebService接口实例 -
cmd 调用webservice接口_Java调用webservice接口
2020-12-21 11:04:362.准备Axis2工具:将axis2-1.5.6-bin.zip解压,然后进入bin目录下;...将wsdl文件保存到bin目录下,...(注意有个分号) 其实上面调用webservice的方法对于任意的wsdl地址都可以用,写客户端调用接口的代码也是一个套路。 -
python调用webservice接口的实现
2020-09-19 02:16:46主要介绍了python调用webservice接口的实现,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧 -
Java使用XFire调用WebService接口.doc
2020-01-15 10:09:24Java使用XFire调用WebService接口 看了一些Java调用WebService接口的例子很多都是Ctrl+C,Ctrl+V的其中有很多拿来使用后发现有错误令人郁闷特此写了一篇经过测试的只是一个小例子 服务端为客户端提供Webservice接口 ... -
php中创建和调用webservice接口示例
2020-10-25 15:11:00主要介绍了php中创建和调用webservice接口示例,包括webservice基本知识、webservice服务端例子、webservice客户端例子,需要的朋友可以参考下 -
python调用webservice接口_python使用suds调用webservice接口的方法
2020-12-05 00:41:50最近做接口对接,遇到了.net开发的webservice接口,因为python第一次与webservice对接,连问带查,最后使用suds库来实现了1.安装sudsmac: sudo pip install sudslinux: easy_install suds也可以通过去官网下载suds... -
java 调用webService接口
2018-07-18 16:06:20由于项目中使用webService接口,因此学习了下如何调用webService接口。 一、使用httpClient调用webService接口: public static String executeWebService(String urls,String soapXml) throws IOException { ...
-
华为1+X认证——网络系统建设与运维(初级)
-
MAC php7.4.13 使用pecl安装扩展报错
-
Docker从入门到精通
-
springboot之yml配置文件信息加密.docx
-
USBQD_V3.0_XiTongZhiJia.rar
-
在 Linux 上构建企业级 DNS 域名解析服务
-
golang 实现socket通信编程 练习
-
阿里云存储面试题偏向系统底层
-
linux基础入门和项目实战部署系列课程
-
123. 买卖股票的最佳时机 III
-
MHA 高可用 MySQL 架构与 Altas 读写分离
-
Galera 高可用 MySQL 集群(PXC v5.6 + Ngin
-
全球编程大赛作品,拍摄月亮 3.98K.rar
-
精通编译Makefile,Nina, 从底层uboot到Android
-
linux c can总线通信 源代码
-
linux c uart 串口通信 应用层代码
-
Ubuntu 设置中文
-
linux c 通过http 协议 ,上传文件到服务器 源码
-
golang网络编程
-
Pi Network_Pi币_Pi币挖矿_Pi教程