精华内容
下载资源
问答
  • 广义系统通知,究竟是推送还是拉取呢?不同业务,不同需求,实现方式不同。 系统对1的通知: • 实时性要求高,可以推送 • 实时性要求低,可以拉取 系统对N的通知: • 登录弹窗新闻,拉取更佳,可以用一个last_...
  • 当我们调用别人接口推送数据时,需要对方给一个接口地址以及接口的规范文档,规范中要包括接口的明确入参及其格式,和接口返回状态的几种情况, 调用的后台acion层业务管理层代码: /** * 调用XXX市接口推送...

    实际开发中经常会遇到要和其他平台或系统对接的情况,实际操作就是互相调用别人的接口获取或者推送数据,

    当我们调用别人接口推送数据时,需要对方给一个接口地址以及接口的规范文档,规范中要包括接口的明确入参及其格式,和接口返回状态的几种情况,

    调用的后台acion层业务管理层代码:

    /**
         * 调用XXX市接口推送银行开户信息  
         * ywguid 即为 projectguid
         * @exception/throws [违例类型] [违例说明]
         * @see [类、类#方法、类#成员]
         */
        public void pushToSZOpenAcountApplyinfo(String projectguid) {
            try {
                YzyhEntityServiceImpl yzyhEntityServiceImpl = new YzyhEntityServiceImpl();
                System.out.println("===================引入银行印章流程得实体service" + yzyhEntityServiceImpl);
                YzyhEntity yzyhEntity = yzyhEntityServiceImpl.getYzyhEntityByProjectguid(projectguid);
                //时间格式化
                SimpleDateFormat sdf2 = new SimpleDateFormat("yyyy-MM-dd 00:00:00");
                if (yzyhEntity != null) {
                    RestfulService restfulservice = new RestfulService();
                    JSONObject jobparasjson = new JSONObject();
                    JSONObject jobjparas = new JSONObject();
                    jobparasjson.put("token", "xxx_WebSerivce_**##0601");
                    //业务标识
                    jobjparas.put("ywguid", projectguid);
                    //存款人名称
                    jobjparas.put("acctna", StringUtil.isBlank(yzyhEntity.getAcctna()) ? "" : yzyhEntity.getAcctna());
                    //证明文件种类
                    if (StringUtil.isNotBlank(yzyhEntity.getIdtftp())) {
                        jobjparas.put("idtftp", yzyhEntity.getIdtftp());
                    } else {
                        jobjparas.put("idtftp", "M");
                    }
                    String areacode = "";
                    //证明文件编号
                    jobjparas.put("idtfno", StringUtil.isBlank(yzyhEntity.getIdtfno()) ? "" : yzyhEntity.getIdtfno());
                    //证明文件有效期 
                    jobjparas.put("matudt", StringUtil.isBlank(yzyhEntity.getMatudt()) ? "2099-12-30 00:00:00"
                            : sdf2.format(yzyhEntity.getMatudt()));
                    //地址
                    //                String address = yzyhEntity.get("Ctrl66") + "省(市/区)";
                    //                address += yzyhEntity.get("Ctrl67") + "市(区/盟/州)";
                    //                address += yzyhEntity.get("Ctrl68") + "县";
                    //                address += yzyhEntity.get("Ctrl69") + "乡(镇/街道)";
                    //                address += yzyhEntity.get("Ctrl70") + "村(路)";
                    //                address += yzyhEntity.get("Ctrl71") + "号";
                    //id有效期
                    jobjparas.put("lwiddt", StringUtil.isBlank(yzyhEntity.getLwiddt()) ? "2099-12-30 00:00:00"
                            : sdf2.format(yzyhEntity.getLwiddt()));
                    //证件编号
                    jobjparas.put("lwidno", yzyhEntity.getLwidno());
                    //基本账户开户许可核准号
                    jobjparas.put("dtittp", "ACO1");
                    //代理人证件有效期
                    jobjparas.put("pxmudt", StringUtil.isBlank(yzyhEntity.getPxmudt()) ? "2099-12-30 00:00:00"
                            : sdf2.format(yzyhEntity.getPxmudt()));
                    //业务代码
                    jobjparas.put("qxcode", yzyhEntity.getQxcode());
                    jobparasjson.put("params", jobjparas);
                    System.out.println("开户申请参数:" + jobparasjson);
                    //调用市政上报接口
                    String result = restfulservice.getTaskinfo(jobparasjson.toString());
                    System.out.println("===============开户申请信息返回值:" + result);
                    if (StringUtil.isBlank(result)) {
                        System.out.println("=============开户申请信息推送失败=====================");
                    }
                    JSONObject jsonresult = (JSONObject) JSONObject.parse(result);
                    String custom = jsonresult.getString("custom");
                    JSONObject jsoncustom = (JSONObject) JSONObject.parse(custom);
                    String code = jsoncustom.getString("code");
                    if ("1".equals(code)) {
                        System.out.println("==============开户申请返回结果:" + jsoncustom.getString("text"));
                    } else {
                        System.out.println("==============开户申请返回结果:" + jsoncustom.getString("text"));
                    }
                }
            } catch (Exception e) {
                e.printStackTrace();
                System.out.print(e.toString());
            }
        }

     

    所调用的所调用的restful接口,包含http模拟请求代码的service层业务逻辑实施层代码:

    package com.xxx.xxxxx.yzyhentity.action;
    
    import org.apache.commons.httpclient.HttpClient;
    import org.apache.commons.httpclient.HttpMethod;
    import org.apache.commons.httpclient.methods.PostMethod;
    import org.apache.commons.httpclient.methods.RequestEntity;
    import org.apache.commons.httpclient.methods.StringRequestEntity;
    
    import com.xxx.basic.bizlogic.sysconf.systemparameters.service.FrameConfigService9; 
    /**
     * 接口请求
     *  [一句话功能简述]
     *  [功能详细描述]
     * @see [相关类/方法]
     * @since [产品/模块版本]
     */
    public class RestfulService
    {
    
        private static String SZRESTFULURL;
    
        private static String pushSZzwzxOpenAcountApplyinfo = "szbank/pushSZzwzxOpenAcountApplyinfo";//开户申请推送市政务服务中心商业银行 
    
        static {
            SZRESTFULURL = new FrameConfigService9().getFrameConfigValue("苏州市restful接口地址");
        }
    
        /**
         *  开户申请推送市政务服务中心商业银行
         *  [一句话功能简述]
         *  [功能详细描述]
         *  @param param ,为调用别人接口的入参
         *  @return    
         * @exception/throws [违例类型] [违例说明]
         * @see [类、类#方法、类#成员]
         */
        public String getTaskinfo(String param) {
            String url = SZRESTFULURL + pushSZzwzxOpenAcountApplyinfo;
            System.out.println("=============开户申请信息推送地址:"+url);
            return sendPost(url, param);
        }
     
        /**
         * http模拟请求
         */
        public String sendPost(String url, String param) {
            try {
                String result = null;
                String loginresturl = url;
                HttpClient httpClient = new HttpClient();
                PostMethod post = new PostMethod(loginresturl);
                HttpMethod method = post;
                System.out.println("=============开户申请信息推送地址:"+url);
                if (param != null) {
                    RequestEntity se = new StringRequestEntity(param, "application/json", "UTF-8");
                    post.setRequestEntity(se);
                }
                try {
                    httpClient.executeMethod(method);
                    String restresponse = method.getResponseBodyAsString();
                    System.out.println("===================restresponse:" + restresponse);
                    result=restresponse;
                } catch (Exception e) {
                    e.printStackTrace();
                    
                } finally {
                    post.releaseConnection();
                    
                }
                return result;
            } catch (Exception e) {
                e.printStackTrace();
                return null;
            }
        }
    
    }

     

    转载于:https://www.cnblogs.com/wmqiang/p/10500663.html

    展开全文
  • Java接口定时推送数据

    千次阅读 2019-06-09 01:12:00
    接口就是URL 可以请求数据获取响应 本文使用JavaSE实现 依赖jar包 # 怕不兼容jdk1.6使用老版本jar commons-beanutils-1.6.jar commons-collections-3.2.1.jar commons-lang-2....

    接口就是URL 可以请求数据获取响应 本文使用JavaSE实现

    依赖jar包

    # 怕不兼容jdk1.6使用老版本jar
    commons-beanutils-1.6.jar
    commons-collections-3.2.1.jar
    commons-lang-2.1.jar
    commons-logging-1.1.1.jar
    ezmorph-1.0.1.jar
    ezmorph-1.0.2.jar
    json-lib-2.4-jdk15.jar
    mysql-connector-java-5.0.5-bin.jar
    
    // 使用JDK自带Timer 和 HttpURLConnection
    public static void main(String[] args) {
    
    	Timer timer = new Timer();
    	timer.schedule(new TimerTask() {
    		public void run() {
    
    			List userList = new ArrayList();
    			List orgList = new ArrayList();
    
    			try {
    				String URL="jdbc:mysql://localhost/data?characterEncoding=utf-8";
    				String USER="data";
    				String PASSWORD="data";
    				// 1.加载驱动程序
    				Class.forName("com.mysql.jdbc.Driver");
    				// 2.获得数据库连接
    				Connection conn=DriverManager.getConnection(URL, USER, PASSWORD);
    				// 3.通过数据库的连接操作数据库 实现增删改查(使用Statement类)
    				Statement st=conn.createStatement();
    
    				// ---用户信息开始
    				ResultSet userRs=st.executeQuery(
    						"SELECT" +
    								" EMP_ID" + // 用户id
    								" ,ACCOUNT" + // 用户账户
    								" ,ORG_ID" + // 用户部门id
    								" ,EMPNAME" + // 用户名
    								" ,EMP_PASSWORD" + // 密码
    								" ,ISDELETE" + // 用户是否删除 0未删除 1已删除
    								" FROM" +
    								" ORG_EMPLOYEE");
    				// 4.处理数据库的返回结果(使用ResultSet类)
    				userList = new ArrayList();
    				while (userRs.next()) {
    					Map user = new HashMap();
    					user.put("id", userRs.getString("EMP_ID"));
    					user.put("loginName", userRs.getString("ACCOUNT"));
    					user.put("userName", userRs.getString("EMPNAME"));
    					user.put("password", userRs.getString("EMP_PASSWORD"));
    					user.put("userCateId", userRs.getString("ORG_ID"));
    					userList.add(user);
    				}
    				userRs.close(); // 关闭资源
    				// ---用户信息结束
    
    				// ---部门信息开始
    				ResultSet orgRs = st.executeQuery(
    						"SELECT" +
    						 " ORG_ID" +
    						 " ,ORGNAME" +
    						 " ,ORGPARENTORGID" +
    						 " FROM" +
    						 " ORG_ORGANIZATION");
    				// 4.处理数据库的返回结果(使用ResultSet类)
    				while (orgRs.next()) {
    					Map org = new HashMap();
    					org.put("id", orgRs.getString("ORG_ID"));
    					org.put("cateName", orgRs.getString("ORGNAME"));
    					org.put("parentId", orgRs.getString("ORGPARENTORGID"));
    					orgList.add(org);
    				}
    				orgRs.close(); // 关闭资源
    				// ---部门信息结束
    
    				st.close(); // 关闭资源
    				conn.close(); // 关闭资源
    			} catch (ClassNotFoundException e) {
    				e.printStackTrace();
    			} catch (SQLException e) {
    				e.printStackTrace();
    			}
    
    			// 可直接在url上输入参数 中文要编码成UTF-8的字节数组后转成String
    			// String urlPath = new String("http://localhost:8080/data_sync?data=数据".getBytes("UTF-8"));
    			String urlPath = "http://localhost:8080/data_sync";
    
    			// 调用端如不自动解码 则可通过如下方式编码
    			// URLEncoder.encode(userList.toString(), "UTF-8")
    			// 调用端使用如下解码
    			// URLEncoder.decode(userList.toString(), "UTF-8")
    
    			String param  = "userList=" + JSONArray.fromObject(userList).toString()
    					+ "&orgList=" + JSONArray.fromObject(orgList).toString()
    					+ "&token=t$o$k$e$n";
    			try {
    				// 服务地址
    				URL url = new URL(urlPath);
    				// 设定连接的相关参数
    				HttpURLConnection connection = (HttpURLConnection) url.openConnection();
    				connection.setDoOutput(true);
    				connection.setRequestMethod("POST");
    				OutputStreamWriter out = new OutputStreamWriter(connection.getOutputStream(), "UTF-8");
    				// 向服务端发送 key = value对
    				out.write(param);
    				out.flush();
    				out.close();
    				// 获取服务端的反馈
    				String strLine = "";
    				String strResponse = "";
    				InputStream in = connection.getInputStream();
    				BufferedReader reader = new BufferedReader(new InputStreamReader(in));
    				while((strLine = reader.readLine()) != null) {
    					strResponse += strLine + "\n";
    				}
    				System.out.println(strResponse);
    			} catch (MalformedURLException e) {
    				e.printStackTrace();
    			} catch (IOException e) {
    				e.printStackTrace();
    			}
    			System.out.println("已经执行" + new SimpleDateFormat ("HH:mm:ss").format (new Date()));
    		}
    	}, 1000, 1000 * 60); // 此时为一分钟执行一次 每次延迟一秒执行
    }
    

    调用方为Spring的Controller

    @Controller
    public class DataSyncController {
    
        @Autowired
        private SysUserService userService;
    
        @Autowired
        private SysUserCateService userCateService;
    
        @ResponseBody
        @PostMapping("data_sync")
        public boolean test(String token, String userList, String orgList) {
    
            if (!token.equals("t$o$k$e$n")) {
                return false;
            }
    
            try {
                JSONArray userJson =  JSONArray.fromObject(userList); // 获取data字段
                JSONArray orgJson =  JSONArray.fromObject(orgList); // 获取data字段
    
                List<SysUser> users = JSONArray.toList(userJson, new SysUser(), new JsonConfig());
                List<SysUserCate> userCates = JSONArray.toList(orgJson, new SysUserCate(), new JsonConfig());
    
                userService.syncData(users);
                userCateService.sysnData(userCates);
                return true;
            } catch (Exception e) {
                e.printStackTrace();
                return false;
            }
        }
    }
    

    窗口运行

    java -jar DataSync.jar
    

    后台运行

    @echo off
    START "data-sync" javaw -jar DataSync.jar
    

    SpringBoot自带定时任务

    @EnableScheduling // 开启对定时任务支持
    @SpringBootApplication
    public class DmsAdminApplication{
        public static void main(String[] args) {
            SpringApplication.run(DmsAdminApplication.class, args);
        }
    }
    
    @Component
    // 启动类写了如下注解 此处可省略书写
    @EnableScheduling
    public class TestTask {
    
    	// 配置毫秒数
        @Scheduled(fixedRate = 1000) // 毫秒
        public void reportCurrentTime() {
            System.out.println ("已经执行" + new SimpleDateFormat ("HH:mm:ss").format (new Date()));
        }
    
    	// cron表达式写法
        // @Scheduled(cron = "* * * * *") // 每1分钟执行一次
        // @Scheduled(cron = "*/1 * * * *") // 每1分钟执行一次
        @Scheduled(cron = "0 */2 * * *") // 每两个小时执行一次
        public void reportCurrentByCron() {
            System.out.println ("已经执行" + new SimpleDateFormat ("HH:mm:ss").format (new Date ()));
        }
    }
    

    cron表达式有7个域 依序分别为 秒 分 时 日 月 周 年 年为可选类型 在不设定年分时为每年
    

    cron字符描述

    字符描述
    *匹配所有的值 如 *在分钟的字段域里表示 每分钟
    ?只在日期域和星期域中使用 它被用来指定非明确的值
    -指定范围 如 10-12在小时域意味着10点、11点、12点
    ,指定多个值 如 MON WED FRI在星期域里表示星期一 星期三 星期五
    /指定增量 如 */1 * * * *每1分钟执行一次
    L表示day-of-month和day-of-week域 但在两个字段中的意思不同 例如day-of-month域中表示一个月的最后一天 如果在day-of-week域表示’7’或者’SAT’ 如果在day-of-week域中前面加上数字 它表示一个月的最后几天 例如’6L’就表示一个月的最后一个星期五
    W只允许日期域出现 这个字符用于指定日期的最近工作日 例如 在日期域中写15W表示 此月15号最近的工作日 所以 如果15号是周六 则任务会在14号触发 如果15好是周日 则任务会在周一也就是16号触发 如果是在日期域填写1W即使1号是周六 那么任务也只会在下周一 也就是3号触发 W字符指定的最近工作日是不能够跨月份的 字符W只能配合一个单独的数值使用 不能够是一个数字段 如 1-15W是错误的
    LWL和W可以在日期域中联合使用 LW表示这个月最后一周的工作日
    #只允许在星期域中出现 指定本月的某天 如 6#3表示本月第三周的星期五 6表示星期五 3表示第三周
    C允许在日期域和星期域出现 此表达式值依赖于相关日历计算 无日历关联 则等价于所有包含的日历 如 日期域是5C表示关联日历中第一天 或者这个月开始的第一天的后5天 星期域是1C表示关联日历中第一天 或者星期的第一天的后1天 也就是周日的后一天周一

    cron字符对应意义

    字段允许值允许的特殊字符
    0-59, - * /
    0-59, - * /
    小时0-23, - * /
    月内日期1-31, - * ? / L W C
    1-12 或者 JAN-DEC, - * /
    周内日期1-7 或者 SUN-SAT, - * ? / L C #
    年(可选)留空 1970-2099, - * /

    cron常用写法

    表达式作用
    * * * * *每1分钟执行一次
    */1 * * * *每1分钟执行一次
    0 0 1 * * ?每天1点触发
    0 10 1 ? * *每天早上1点10分触发
    0 10 1 * * ?每天早上1点10分触发
    0 10 1 * * ? *每天早上1点10分触发
    0 10 1 * * ? 20202020年的每天1点10分触发
    0 * 2 * * ?每天1点到1点59分每分钟一次触发
    0 0/5 14 * * ?每天从下午2点开始到2:55分结束每5分钟一次触发
    0 0/5 1,3 * * ?每天1点至1点55分 6点至6点55分每5分钟一次触发
    0 5-10 1 * * ?每天1点5分至1点10分每分钟一次触发
    0 10,15 1 ? 3 WED三月的每周三的1点10分和1点15分触发
    0 10 1 ? * MON-FRI每周 周一至周五1点10分触发
    持续更新。。。
    cron表达式参考 https://www.cnblogs.com/Leo_wl/p/4714135.html

    转载于:https://www.cnblogs.com/setlilei/p/11032356.html

    展开全文
  • 是这样的,对方公司让我们写一个接口,然后推送给我们json 格式的数据,我是新手,一脸懵逼,求大神指教该怎么写这个接口啊,万分感谢
  • 主要介绍了C#微信接口推送模板消息功能,结合实例形式分析了C#操作微信推送模板消息接口的具体操作步骤与相关使用技巧,需要的朋友可以参考下
  • java 调用webservice接口推送数据

    千次阅读 2019-10-25 17:18:05
    需求:扫描数据库表数据, 待发送,发送失败且次数不超过3次的的数据推送到别的系统 通过对方提供的xml报文 拼接报文代码:public static String getXML(Map<String, Object> noSucDataMap) { String title ...

    需求:扫描数据库表数据, 待发送,发送失败且次数不超过3次的的数据,推送到别的系统
    通过对方提供的xml报文

    拼接报文代码:public static String getXML(Map<String, Object> noSucDataMap) {
    String title = noSucDataMap.get(“noticeName”) == null ? “” : noSucDataMap.get(“noticeName”).toString();
    Object projectName = noSucDataMap.get(“tenderName”) == null ? “” : noSucDataMap.get(“tenderName”).toString();
    Object RegionCode = noSucDataMap.get(“regionCode”) == null ? “” : noSucDataMap.get(“regionCode”).toString();
    Object NoticeContent = noSucDataMap.get(“noticeContent”) == null ? “” : noSucDataMap.get(“noticeContent”).toString();
    Object tenderType = noSucDataMap.get(“tenderType”) == null ? “” : noSucDataMap.get(“tenderType”).toString();
    Object createTime = noSucDataMap.get(“createTime”);
    Object bidOpenTime = noSucDataMap.get(“bid_open_time”);
    DateFormat df = new SimpleDateFormat(“yyyy-MM-dd’T’HH:mm:ss”);
    String createTimeStr = df.format(createTime);
    String bidOpenTimeStr = “”;
    if (bidOpenTime != null) {
    bidOpenTimeStr = df.format(bidOpenTime);
    }else {
    System.out.println(“开标时间不能为空!”);
    }

        String soapXML = "<?xml version=\"1.0\" encoding=\"utf-8\"?>\n" +
                "<soap:Envelope xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\" xmlns:soap=\"http://schemas.xmlsoap.org/soap/envelope/\">\n" +
                "  <soap:Body>\n" +
                "    <InsertNoticeInfo xmlns=\"http://tempuri.org/\">\n" +
                "      <userName>test</userName>\n" +
                "      <passWord>111111</passWord>\n" +
                "      <model>\n" +
                "        <NoticeInfoId>0</NoticeInfoId>\n" +
                "        <CategoryId>0</CategoryId>\n" +
                "        <NoticeType>0</NoticeType>\n" +
                "        <Title>" + title + "</Title>\n" +
                "        <Author></Author>\n" +
                "        <Source></Source>\n" +
                "        <UploadFileExplain></UploadFileExplain>\n" +
                "        <UploadFilePath></UploadFilePath>\n" +
                "        <OwnerUnit_ContactPerson></OwnerUnit_ContactPerson>\n" +
                "        <OwnerUnit_Name></OwnerUnit_Name>\n" +
                "        <OwnerUnit_Phone></OwnerUnit_Phone>\n" +
                "        <Qualification></Qualification>\n" +
                "        <Agency_Name></Agency_Name>\n" +
                "        <Agency_ContactPerson></Agency_ContactPerson>\n" +
                "        <Agency_Phone></Agency_Phone>\n" +
                "        <Tender></Tender>\n" +
                "        <TenderType>" + tenderType + "</TenderType>\n" +
                "        <RegionCode>" + RegionCode + "</RegionCode>\n" +
                "        <ProjectName>" + projectName + "</ProjectName>\n" +
                "        <ForecastSuccessfulcandidate></ForecastSuccessfulcandidate>\n" +
                "        <TransactionAmount>0</TransactionAmount>\n" +
                "        <ProjectLeader></ProjectLeader>\n" +
                "        <NoticeContent><![CDATA[" + NoticeContent + "]]></NoticeContent>\n" +
                "        <CreateTime>" + createTimeStr + "</CreateTime>\n" +
                "        <CreateUserId></CreateUserId>\n" +
                "        <TenderDeadline>" + bidOpenTimeStr + "</TenderDeadline>\n" +
                "        <Credential></Credential>\n" +
                "        <Status>0</Status>\n" +
                "        <IsSend>true</IsSend>\n" +
                "        <Scale></Scale>\n" +
                "        <BidPerson></BidPerson>\n" +
                "        <EvaluationBidExpenses>0</EvaluationBidExpenses>\n" +
                "        <State></State>\n" +
                "        <ProjectFilingUN></ProjectFilingUN>\n" +
                "        <ProjectApprovalUN></ProjectApprovalUN>\n" +
                "        <ChapterNumber>0</ChapterNumber>\n" +
                "        <BiddingScope></BiddingScope>\n" +
                "        <BidTime>" + bidOpenTimeStr + "</BidTime>\n" +
                "        <PlanTime></PlanTime>\n" +
                "        <ProjectCondition></ProjectCondition>\n" +
                "        <BidWay></BidWay>\n" +
                "        <BidAddress></BidAddress>\n" +
                "        <PublishMedia></PublishMedia>\n" +
                "        <SectionName></SectionName>\n" +
                "        <OpenAddress></OpenAddress>\n" +
                "        <FirstPerson></FirstPerson>\n" +
                "        <FirstPrice>0</FirstPrice>\n" +
                "        <FirstProjectPerson></FirstProjectPerson>\n" +
                "        <SecondPerson></SecondPerson>\n" +
                "        <SecondPrice>0</SecondPrice>\n" +
                "        <SecondProjectPerson></SecondProjectPerson>\n" +
                "        <TenderPerson></TenderPerson>\n" +
                "        <TenderPrice>0</TenderPrice>\n" +
                "        <TenderProjectPerson></TenderProjectPerson>\n" +
                "        <CreateUsername></CreateUsername>\n" +
                "        <PriceSource></PriceSource>\n" +
                "      </model>\n" +
                "      <categoryId>" + tenderType + "</categoryId>\n" +
                "      <fBytes></fBytes>\n" +
                "      <errorString></errorString>\n" +
                "    </InsertNoticeInfo>\n" +
                "  </soap:Body>\n" +
                "</soap:Envelope>";
        return soapXML;
    }
    

    //业务逻辑
    public void selLogsNoSuc() {
    List<Map<String, Object>> noSucDataList = winBidCandidateDao.selLogsNoSuc();
    // List sendSucCode = new ArrayList();
    for (int i = 0; i < noSucDataList.size(); i++) {
    Map<String, Object> noSucDataMap = noSucDataList.get(i);

            //获取报文
            String soapXML = getXML(noSucDataMap);
            WebserviceResultBean ret = sendDataAhtbaWebService(soapXML);
            int id = Integer.parseInt(String.valueOf(noSucDataMap.get("id")));
            LogsAhszbtbxxw logsAhszbtbxxwNum = winBidCandidateDao.selLogsAhsInfoById(id);
            int sendNum = logsAhszbtbxxwNum.getSendNum() + 1;
            LogsAhszbtbxxw logsAhszbtbxxwObj = new LogsAhszbtbxxw();
            logsAhszbtbxxwObj.setId(id);
            logsAhszbtbxxwObj.setSendNum(sendNum);
    
            //创建名字表对象
            LogsAhszbtbxxwDetail logsAhszbtbxxwDetail = new LogsAhszbtbxxwDetail();
            Object noticeId = noSucDataMap.get("noticeId");
            if (noticeId != null) {
                logsAhszbtbxxwDetail.setNoticeId(noticeId.toString());
            }
            logsAhszbtbxxwDetail.setNoticeId(noSucDataMap.get("noticeId").toString());
            logsAhszbtbxxwDetail.setSendTime(new Date());
            logsAhszbtbxxwDetail.setXml(soapXML);
    
            if ("true".equals(ret.getResult())) {
                logsAhszbtbxxwObj.setStates("1");
                logsAhszbtbxxwDetail.setRemarks(ret.getRemark());
                logsAhszbtbxxwDetail.setStates("1");
            } else {
                logsAhszbtbxxwObj.setStates("2");
                logsAhszbtbxxwDetail.setStates("2");
                String remark = ret.getRemark() == null ? "" : ret.getRemark();
                logsAhszbtbxxwDetail.setRemarks(ret.getResult() + remark);
    

    // logsAhszbtbxxwDetail.setRemarks();
    }
    winBidCandidateDao.updateStates(logsAhszbtbxxwObj);
    winBidCandidateDao.insertLogsDetail(logsAhszbtbxxwDetail);
    }
    System.out.println(“扫描logs_ahszbtbxxw 待发送,发送失败且次数不超过3次的公告”);
    }

    //调用接口逻辑

    public static WebserviceResultBean sendDataAhtbaWebService(String soapXML) {
    // int responseCode=500;
    WebserviceResultBean ret = new WebserviceResultBean();
    try {
    //1:创建服务地址 接口地址
    URL url = new URL(“http://60.173.235.154:9021/ahtbaWebService.asmx”);
    //2:打开到服务地址的一个连接
    try {
    HttpURLConnection connection = (HttpURLConnection) url.openConnection();
    //3.1设置发送方式:POST必须大写
    connection.setRequestMethod(“POST”);
    //3.2设置数据格式:Content-type
    connection.setRequestProperty(“content-type”, “text/xml;charset=utf-8”);
    connection.setDoInput(true);
    connection.setDoOutput(true);

                //4:组织SOAP协议数据,发送给服务端
    

    // String soapXML = getXML(“1866666666”);
    byte[] b = soapXML.getBytes(); //封装数据,数据以byte方式传输
    connection.setRequestProperty(“Content-Length”, String.valueOf(b.length));

                OutputStream os = connection.getOutputStream();
                os.write(b);
    
                //5:接收服务端的响应
                int responseCode = connection.getResponseCode();
                if (200 == responseCode) {
                    InputStream is = connection.getInputStream();
                    InputStreamReader isr = new InputStreamReader(is);
                    BufferedReader br = new BufferedReader(isr);
                    StringBuilder sb = new StringBuilder();
                    String temp = null;
    
                    while (null != (temp = br.readLine())) {
                        sb.append(temp);
                    }
                    System.out.println(sb.toString());
                    String sbXML = sb.toString();
                    ret = parseSoapMessage(sbXML);
                } else {
                    ret.setResult(String.valueOf(responseCode));
                }
    

    //
    // InputStream is1 = connection.getErrorStream();
    // InputStreamReader isr1 = new InputStreamReader(is1,“utf-8”);
    // BufferedReader in = new BufferedReader(isr1);
    // String inputLine;
    // BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(
    // new FileOutputStream(“result.xml”)));// 将结果存放的位置
    // while ((inputLine = in.readLine()) != null)
    // {
    // System.out.println(inputLine);
    // bw.write(inputLine);
    // bw.newLine();
    // bw.close();
    // }
    // in.close();
    os.close();
    } catch (IOException e) {
    e.printStackTrace();
    }

        } catch (MalformedURLException e) {
            e.printStackTrace();
        } catch (IOException e) {
            e.printStackTrace();
        }
    
        return ret;
    }
    

    //解析接口返回的报文信息

    /**
     * 解析soapXML
     *
     * @param soapXML
     * @return
     */
    public static WebserviceResultBean parseSoapMessage(String soapXML) {
        WebserviceResultBean resultBean = new WebserviceResultBean();
        try {
            SOAPMessage msg = formatSoapString(soapXML);
            SOAPBody body = msg.getSOAPBody();
            Iterator<SOAPElement> iterator = body.getChildElements();
            parse(iterator, resultBean);
        } catch (Exception e) {
            e.printStackTrace();
        }
        return resultBean;
    }
    

    /**
    * 把soap字符串格式化为SOAPMessage
    *
    * @param soapString
    * @return
    * @see [类、类#方法、类#成员]
    */
    private static SOAPMessage formatSoapString(String soapString) {
    MessageFactory msgFactory;
    try {
    msgFactory = MessageFactory.newInstance();
    SOAPMessage reqMsg = msgFactory.createMessage(new MimeHeaders(),
    new ByteArrayInputStream(soapString.getBytes(“UTF-8”)));
    reqMsg.saveChanges();
    return reqMsg;
    } catch (Exception e) {
    e.printStackTrace();
    return null;
    }
    }

    /**
    * 解析soap xml
    *
    * @param iterator
    * @param resultBean
    */
    private static void parse(Iterator iterator, WebserviceResultBean resultBean) {
    while (iterator.hasNext()) {
    SOAPElement element = iterator.next();
    if (“InsertNoticeInfoResponse”.equals(element.getNodeName())) {
    Iterator it = element.getChildElements();
    SOAPElement el = null;
    while (it.hasNext()) {
    el = it.next();
    if (“InsertNoticeInfoResult”.equals(el.getLocalName())) {
    resultBean.setResult(el.getValue());
    System.out.println("#### " + el.getLocalName() + " ==== " + el.getValue());
    } else if (“errorString”.equals(el.getLocalName())) {
    resultBean.setRemark(null != el.getValue() ? el.getValue() : “”);
    System.out.println("#### " + el.getLocalName() + " ==== " + el.getValue());
    }
    }
    } else if (null == element.getValue()
    && element.getChildElements().hasNext()) {
    parse(element.getChildElements(), resultBean);
    }
    }
    }

    这里我的做的是个定时任务
    public void selLogsNoSuc(){
    System.out.println(“扫描logs_ahszbtbxxw 待发送,发送失败且次数不超过3次的公告”);
    winBidCandidateService.selLogsNoSuc();
    }

    展开全文
  • WEBSERVICE调试工具-ESB消息统一推送接口调用说明,内附调试工具,开发webservice接口的同学可以下载
  • 股票实时行情、股票实时数据是网际风www.nezip.cn全推数据接口的基础功能, 采用全推方式将股票实时行情、股票实时数据推送到客户端,减少客户端请求数据的响应时间,可以很好地支持像分析家、飞狐交易师、步步汇盈...
  • Extmail数据接口,支持推送用户数据、发送、读取邮件,需要完成extmail部署后,
  • java如何给第三方接口推送加密数据 java如何调用接口  在实际开发过程中,我们经常需要调用对方提供的接口或测试自己写的接口是否合适,所以,问题来了,java如何调用接口?很多项目都会封装规定好本身项目的接口...

    java如何给第三方接口推送加密数据

    java如何调用接口

     在实际开发过程中,我们经常需要调用对方提供的接口或测试自己写的接口是否合适,所以,问题来了,java如何调用接口?很多项目都会封装规定好本身项目的接口规范,所以大多数需要去调用对方提供的接口或第三方接口(短信、天气等)。
    
      URL url = new URL(path);
    
    1. 打开和url之间的连接
       HttpURLConnection conn = (HttpURLConnection) url.openConnection();
    
    2. 设置通用的请求属性
    
       conn.setRequestProperty("accept", "*/*");
       conn.setRequestProperty("connection", "Keep-Alive");
       conn.setRequestProperty("user-agent", "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1)");
    
    3. 设置是否向httpUrlConnection输出,设置是否从httpUrlConnection读入,此外发送post请求必须设置这两个最常用的Http请求无非是get和post,get请求可以获取静态页面,也可以把参数放在URL字串后面,传递给servlet,post与get的 不同之处在于post的参数不是放在URL字串里面,而是放在http请求的正文内。
    
       conn.setDoOutput(true);
       conn.setDoInput(true);
    
    4. 断开连接,最好写上,disconnect是在底层tcp socket链接空闲时才切断。如果正在被其他线程使用就不切断。固定多线程的话,如果不disconnect,链接会增多,直到收发不出信息。写上disconnect后正常一些。
       conn.disconnect();
    

    具体代码

    package com.c;
    import java.io.BufferedReader;
    import java.io.InputStream;
    import java.io.InputStreamReader;
    import java.io.PrintWriter;
    import java.net.HttpURLConnection;
    import java.net.URL;
    /**
     * @author 
     */
    public class ToInterface {
        /**
         * 调用对方接口方法
         * @param path 对方或第三方提供的路径
         * @param data 向对方或第三方发送的数据,大多数情况下给对方发送JSON数据让对方解析
         */
        public static void interfaceUtil(String path,String data) {
            try {
                URL url = new URL(path);
                //打开和url之间的连接
                HttpURLConnection conn = (HttpURLConnection) url.openConnection();
                PrintWriter out = null;
                //请求方式
    			//conn.setRequestMethod("POST");
    			//设置通用的请求属性
                conn.setRequestProperty("accept", "*/*");
                conn.setRequestProperty("connection", "Keep-Alive");
                conn.setRequestProperty("user-agent", "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1)"); 
                //设置是否向httpUrlConnection输出,设置是否从httpUrlConnection读入,此外发送post请求必须设置这两个
                //最常用的Http请求无非是get和post,get请求可以获取静态页面,也可以把参数放在URL字串后面,传递给servlet,
                //post与get的 不同之处在于post的参数不是放在URL字串里面,而是放在http请求的正文内。
                conn.setDoOutput(true);
                conn.setDoInput(true);
                //获取URLConnection对象对应的输出流
                out = new PrintWriter(conn.getOutputStream());
                //发送请求参数即数据
                这里data就是需要给第三方推送的具体JSON数据
                out.print(data);
                //缓冲数据
                out.flush();
                //获取URLConnection对象对应的输入流
                InputStream is = conn.getInputStream();
                //构造一个字符流缓存
                BufferedReader br = new BufferedReader(new InputStreamReader(is));
                String str = "";
                while ((str = br.readLine()) != null) {
                    System.out.println(str);
                }
                //关闭流
                is.close();
                //断开连接,最好写上,disconnect是在底层tcp socket链接空闲时才切断。如果正在被其他线程使用就不切断。
                //固定多线程的话,如果不disconnect,链接会增多,直到收发不出信息。写上disconnect后正常一些。
                conn.disconnect();
                System.out.println("完整结束");
            } catch (Exception e) {
                e.printStackTrace();
            }
        }
        
        public static void main(String[] args) {
            interfaceUtil("http://api.map.baidu.com/telematics/v3/weather?location=嘉兴&output=json&ak=5slgyqGDENN7Sy7pw29IUvrZ", "");
    //        interfaceUtil("http://192.168.10.89:8080/eoffice-restful/resources/sys/oadata", "usercode=10012");
    //        interfaceUtil("http://192.168.10.89:8080/eoffice-restful/resources/sys/oaholiday",
    //                    "floor=first&year=2017&month=9&isLeader=N");
        }
    }
    
    展开全文
  • 主要介绍了.net 通过URL推送POST数据具体实现,有需要的朋友可以参考一下
  • 股票实时行情、股票实时数据是网际风全推数据接口的基础功能, 采用全推方式将股票实时行情、股票实时数据推送到客户端,减少客户端请求数据的响应时间,可以很好地支持像分析家、飞狐交易师、步步汇盈、大智慧等...
  • Kettle作为开源ETL工具,使用较多(因为不花钱)。 最近我个人在使用的时候遇到了需要将hive的数据... 因为向下游推送数据时候,需要先获取 Token密码,再拼接为API的URL 。所以,第一步需要先获取Token密码: ...
  • 1,rest调用第三方接口(第三方发送post请求,json对象) RestTemplate restTemplate = new RestTemplate(); HttpHeaders headers = new HttpHeaders(); //定义请求参数类型,这里用json所以是MediaType....
  • 最近在自己公司公众号里边加的微信模板消息推送,可以加到自己的后台里边,而且是群发,这样每次企业有什么活动可以群发给所有关注公众号的会员,是一个比较好的营销手段,亲测可用,不懂得可以问我。
  • 先对要推送的json数据进行封装 public void Pushdata() { JSONObject json = new JSONObject(); //此处封装json数据 //调用工具类CommonUtil中的方法传入url以及json数据进行推送 try { String bd = ...
  • 打开百度站长平台, 点开实时推送的添加新数据接口获得带token的api推送地址:    http://ping.baidu.com/sitemap?site=www.yourdomain.com&resource_name=sitemap&access_token=xxxxxxx    分享一段网友写的php...
  • 利用钉钉接口往钉钉群推送信息

    千次阅读 2020-05-19 10:52:31
    利用钉钉接口往钉钉群推送信息 如下图所示,往钉钉群推送关键信息 创建钉钉群 在群设置中选择智能群助手 选择添加机器人 选择自定义,通过Webhook接入自定义服务 设置机器人 安全设置选择自定义关键词,设定后...
  • 将金数据推广上面的广告表单数据推送到个人/企业的业务系统中去 代码都是经过本人测试可以直接使用,本人参考的是java的接口对接,并提供相关代码,如果要对接其他语言如PHP,python则可以自己参考 压缩包内容的文档...
  • WebSocket 推送数据至前端接口实例

    千次阅读 2018-12-13 16:36:27
    package ... import java.io.IOException; import java.util.HashMap; import java.util.List; import java.util.Map; import java.util.concurrent.CopyOnWriteArraySet;...import javax.w...
  • 要在PHP中整体接收POST数据,有两种方法。 注意,要使用以下两种方法,Content-Type不能为multipart/form-data。 方法一: 使用: 1 file_get_contents('php://input') ...
  • OneNet平台数据推送第三方平台

    千次阅读 2019-05-22 16:45:48
    数据推送形式主要有两种:全局推送和群组推送,全局推送则是把所有数据推送个第三方平台,群组推送则是可以选择推送一部分关联设备 第一步:进入OneNet平台登录,进入开发者中心,进入产品开发界面 第二步:...
  • 信息推送接口(Http请求)

    千次阅读 2020-08-27 15:28:25
    消息推送是很常见,一般都会采用手机短信、邮件、公众号、小程序等各种接口进行实现,我是在工作过程中需要实现一个公众号的信息推送,网上查阅过资料,其中腾讯信鸽接口很多人使用,网上教学很多,不过用户需求是要...
  • 百度实时推送助手

    2019-03-05 11:53:19
    每秒可以推送2000条数据,还可以挂机.挂机模式可以不停的循环推送! 使用说明: 1.先配置接口文件,支持多行 2.配置推送的网址列表,并和相对应的接口路径匹配 3.就可以挂机了,理论挂机 一天可以推送 600万条
  • 背景 web视界前几天遇到很多人都在咨询的一个问题...根据百度官方说法,百度主动推送接口能缩短爬虫发现网站链接的时间,网站时效性内容建议使用主动推送,能得到原创保护和快速展现。 百度主动推送能达到什么效果...
  • WebSocket 消息推送接口

    千次阅读 2019-04-18 20:07:49
    data: msg, // 推送的消息内容,可以为字符串,也可以为 Object 对象... selfToken: tokenId //推送者的 tokenId }[, function (data) { // 可选参数 // 得到成功推送消息给服务器的消息 console.log(data); }]...
  • httpclient post推送数据

    千次阅读 2019-01-04 21:49:46
    * 从接口获取数据 * @param url 服务器接口地址 * @param json 传入的参数 若获取全部,此项为空 * @return 返回查询到的数据 * @throws HttpException * @throws IOException */ public JSONObject ...
  • 调用钉钉接口消息推送

    千次阅读 2021-07-29 14:06:28
    var json_req = new { touser = userid, //接受推送userid,不同用户用|分割 toparty = "", //接受推送部门id agentid = "1236822342", msgtype = "text", //推送类型 text = new { content = "测试数据\n" + ...
  • 物联网开发 第4讲 中移OneNET HTTP推送服务接入 在使用OneNET平台时,如果我们自己开发应用,基本上会有获取设备的上下线信息以及设备... 使用OneNET提供的数据推送的服务,实时推送设备上下线状态以及数据点...
  • 接口数据推拉模式特点比较分析

    千次阅读 2019-08-22 14:08:57
    模式:数据生产方主动向数据消费方传递消息,数据消费方提供数据接收接口 拉模式:数据生产方准备好数据仓库,数据消费方主动发起调用程序去数据生产方的数据仓库获取数据 推拉模式特点比较图表分析 条目 ...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 117,418
精华内容 46,967
关键字:

数据接口推送