/* * resources.getEntityManagerContainer() // 实体管理容器. * resources.getContext() //上下文根. * resources.getOrganization() //组织访问接口. * requestText //请求内容. * request //请求对象. */ //////////////////////////////////// config //////////////////////////////////////////////// var Config = { //soap请求地址 "soapUrl": "http://10.134.73.35:8080/haSms/SendSms", //接口地址 "userName": "snrlmh", //用户名 "password" : "snrlmh1904" //密码 }; var applications = resources.getContext().applications(); //返回字符串转json对象 function parseResp(resp) { if (!resp || resp === null) { return { "type": "error", message: "服务响应是null" } } else { var json = JSON.parse(resp.toString()); return json; } } //webserivce请求对象组装 function getSoapReqData( mobile, smsBody, appointTime) { var str = ''+ ' '+ ' '+ ' '+ ' '+ Config.userName +''+ //登陆平台账号 ' '+ Config.password +''+ //登录密码 ' '+ mobile +''+ //要发送的目的手机号 ' '+ smsBody +''+ //短信内容 ' '+ (appointTime || null) +''+ //定时发送时间,如不需要可以传null ' '+ ' '+ '' return str; } //解析xml // function loadXML(xmlString) { // var DocumentBuilderFactory = Java.type('javax.xml.parsers.DocumentBuilderFactory'); // var StringReader = Java.type('java.io.StringReader'); // var InputSource = Java.type('org.xml.sax.InputSource'); // var dbf = DocumentBuilderFactory.newInstance(); // var db = dbf.newDocumentBuilder(); // var sr = new StringReader(xmlString); // var is = new InputSource(sr); // var doc = db.parse(is); // var root = doc.getDocumentElement(); // return root; // } function getXmlText(root, tag) { var list = root.getElementsByTagName(tag); if (list == null) return null; var node = list.item(0); if (node == null) return null; return node.getTextContent(); } function parseResult( xmlStr, requestJson ){ try { var DocumentBuilderFactory = Java.type('javax.xml.parsers.DocumentBuilderFactory'); var StringReader = Java.type('java.io.StringReader'); var InputSource = Java.type('org.xml.sax.InputSource'); var dbf = DocumentBuilderFactory.newInstance(); var db = dbf.newDocumentBuilder(); var sr = new StringReader(xmlStr); var is = new InputSource(sr); var document = db.parse(is); var root = document.getDocumentElement(); // var faultcode = getXmlText(root, "faultcode"); // var faultstring = getXmlText(root, "faultstring"); //返回标识代表了平台是否成功接收到了信息。如返回标识为0,后面则跟着“R”和20位的唯一ID(sid), //如果返回标识为1,后面则跟着“R”和异常编码。 //例如成功为“0R201101220945324SI000”,失败则为“1R001”,按照异常表查询为身份认证失败。 var result = getXmlText(root, "soap:Body"); var errorText = ''; print( "sms返回结果:"+result ) if( result.substr(0,1) === "0" ){ //成功 requestJson.resultCode = "success"; requestJson.result = "成功:" + result; return { "result" : "success", "description" : "返回结果:" + result }; }else{ //失败 var errorCode = result.substr(2,3); switch (errorCode) { case '100': errorText = '平台服务异常'; break; case '001': errorText = '身份认证失败'; break; case '002': errorText = '手机号不合法'; break; case '003': errorText = '信息内容大小超过允许范围'; break; case '009': errorText = '定时时间早于当前时间'; break; case '011': errorText = '密码为空或者账号为空或手机号为空'; break; default: // code } requestJson.resultCode = "error"; requestJson.result = errorText + ":" + result; print( "错误信息:" + errorText ); return { "result" : "error", "description" : "返回结果:" + result + " ,错误信息" + errorCode }; } }catch(e){ print("解析返回结果报错:"); requestJson.resultCode = "run time error"; requestJson.result = "解析返回结果报错:" + e.name + ": " + e.message; print( e.printStackTrace() ); return { "result" : "error", "description" : "解析返回结果报错:" + e.name + ": " + e.message } } } // // // // 0R190521174853520SI000 // // // function sendRequest( xml, requestJson ){ try{ print("发起请求:"+xml); var ArrayList = Java.type('java.util.ArrayList'); var heads = new ArrayList(); var NameValuePair = Java.type('com.x.base.core.project.bean.NameValuePair'); var p1 = new NameValuePair('Content-Type', 'text/xml; charset=utf-8'); heads.add(p1); var HttpConnectionClass = Java.type('com.x.base.core.project.connection.HttpConnection'); var resp = HttpConnectionClass.postAsString(Config.soapUrl, heads, xml); // resp = ''+ // ''+ // ''+ // '0R190521174853520SI000'+ // ''+ // ''+ // '' print( "SMS 返回:"+resp ); return parseResult( resp, requestJson ); }catch(e){ print("发送请求出错:"); requestJson.resultCode = "run time error"; requestJson.result = "发送请求出错:" + e.name + ": " + e.message; print( e.printStackTrace() ); return { "result" : "error", "description" : "发送请求出错:" + e.name + ": " + e.message } } } function saveLog( json ){ var resp = applications.postQuery("x_query_assemble_surface","table/hrMarketSMSLog/row", JSON.stringify(json)); var d = parseResp( resp ); if( d && d.type == "error" ){ print( "save sms log error :" + d.message ); } } //接口调用参数 // { // employeeCode : "处理的人员编码,比如合同到期人员、离岗学习到期人员、转岗到期人员", // person : "处理的人员名称,比如合同到期人员、离岗学习到期人员、转岗到期人员", // typeName : "类型,合同到期人员、离岗学习到期人员、转岗到期人员", // typeCode : "类型,contractNotice、levelToLearn、internalChange", // receiveMobile : "接收人员手机号", // receivePerson : "接收人员", // content : "短信内容", // resultCode : "短信发送结果编码", // result : "短信发送结果", // appointTime : "定时发送时间" // } function init(){ var result =""; var responseText = ""; var requestJson; try{ print( "requestText="+requestText ); requestJson = JSON.parse(requestText); print( "type of requestJson = " + typeof( requestJson )); if( typeof(requestJson) === "string" ){ requestJson = JSON.parse(requestJson); } var mobile = requestJson.receiveMobile; var content = requestJson.content; var xml = getSoapReqData( mobile, content ); result = sendRequest( xml, requestJson ); }catch(e){ e.printStackTrace(); if( requestJson ){ requestJson.resultCode = "run time error"; requestJson.result = e.name + ": " + e.message; } result = { "result" : "error", "description" : e.name + ": " + e.message }; }finally{ if( requestJson ){ saveLog( requestJson ); } print("responseText="+JSON.stringify(result)); return result; } } init();