java接口对接——别人调用我们接口获取数据
java接口对接——别人调用我们接口获取数据,我们需要在我们系统中开发几个接口,给对方接口规范文档,包括访问我们的接口地址,以及入参名称和格式,还有我们的返回的状态的情况,
接口代码:
package com.xx.xxx.yzyhentity.action; import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.Date;
import java.util.List;
import java.util.UUID; import org.atmosphere.plugin.redis.StringUtil;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.bind.annotation.RestController; import com.alibaba.fastjson.JSONArray;
import com.alibaba.fastjson.JSONObject;
import com.xxx.basic.XXXproject.XXXprojectmaterial.domain.XXXProjectMaterial;
import com.xxx.common.util.JsonUtils;
import com.xxx.core.xxxFrameDsManager;
import com.xxx.core.dao.CommonDao;
import com.xxx.core.grammar.Record;
import com.xxx.database.jdbc.config.SplitTableConfig;
import com.xxx.frame.service.attach.entity.FrameAttachInfo;
import com.xxx.frame.service.metadata.code.api.ICodeItemsService;
import com.xxx.frame.service.metadata.code.entity.CodeItems;
import com.xxx.frame.service.metadata.sharding.util.ShardingUtil;
import com.xxx.ycsrh.api.XXXBkaccFeedback; @RestController
@RequestMapping("bkacc")
public class RestfulToSzzwzx
{ @Autowired
private ICodeItemsService iCodeItemsService; /**
* 对方获取股东信息接口
* @param param
* @return
* @exception/throws [违例类型] [违例说明]
* @see [类、类#方法、类#成员]
*/ @SuppressWarnings("unused")
@RequestMapping(value = "/getSZzwzxOpenShareHolders", method = RequestMethod.POST)
public String getSZzwzxOpenShareHolders(@RequestBody String param) {
//返回JSON值
JSONObject userareaJson = new JSONObject();
String result = "";
try {
xxxFrameDsManager.begin(null);
// 参数转化为json对象
JSONObject jsonObject = (JSONObject) JSONObject.parse(param);
// 时间格式化
SimpleDateFormat sdf2 = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
// token验证
String token = jsonObject.getString("token");
if (GXConstant.checkToken(token)) {
JSONObject params = (JSONObject) jsonObject.get("params");
// 业务标识(与开户申请时推送的ywguid一致)
String ywguid = params.getString("ywguid");
// 获取股东信息列表
// List<Record> listGD = iShareform.getGDTableInfo(ywguid);
List<Record> listGD = null;
if (listGD != null && listGD.size() > 0) {
JSONArray jsonArray = new JSONArray();
for (Record rec : listGD) {
JSONObject gdJson = new JSONObject();
// 股东姓名
gdJson.put("shareholdernmae", rec.get("Ctrl1"));
// 证件类型
String idtype = rec.get("Ctrl2");
if(StringUtil.isNotBlank(idtype)){
CodeItems codeItems = iCodeItemsService.getCodeItemByCodeName("内资企业身份证件类型", idtype);
if(codeItems!=null && StringUtil.isNotBlank(codeItems.getDmAbr1())){
gdJson.put("idtype", codeItems.getDmAbr1()); }
else{
gdJson.put("idtype", idtype);
}
} // 证件号码
gdJson.put("idno", rec.get("Ctrl3"));
// 出资时间
gdJson.put("contributivedate", sdf2.format(rec.get("Ctrl4")));
// 出资方式
gdJson.put("contributivetype", rec.get("Ctrl9"));
// 认缴出资额
gdJson.put("contributivenum", rec.get("Ctrl5"));
// 认缴出资比例
gdJson.put("contributivepercent", rec.get("Ctrl7"));
jsonArray.add(gdJson);
userareaJson.put("userarea", jsonArray);
}
result = JsonUtils.zwdtRestReturn("1", "获取股东信息接口调用成功!", userareaJson);
} else {
result = JsonUtils.zwdtRestReturn("0", "接口调用成功,但未查到相关股东数据信息!", userareaJson);
}
} else {
result = JsonUtils.zwdtRestReturn("0", "接口调用失败,原因是:token验证失败!", userareaJson);
} }
catch (Exception e) {
e.printStackTrace();
xxxFrameDsManager.rollback();
result = JsonUtils.zwdtRestReturn("0", "接口调用失败,原因是:" + e.toString(), userareaJson);
}
finally {
xxxFrameDsManager.close();
}
return result;
} /**
* 对方获取开户申请材料接口
* @param param
* @return
* @exception/throws [违例类型] [违例说明]
* @see [类、类#方法、类#成员]
*/
@RequestMapping(value = "/getSZzwzxOpenAcountMaterials", method = RequestMethod.POST)
public String getSZzwzxOpenAcountMaterials(@RequestBody String param) {
// 返回JSON值
JSONObject userareaJson = new JSONObject();
// 材料内son
JSONObject materialJson = new JSONObject();
String result = "";
try {
xxxFrameDsManager.begin(null);
// 参数转化为json对象
JSONObject jsonObject = (JSONObject) JSONObject.parse(param);
// token验证
String token = jsonObject.getString("token");
if (GXConstant.checkToken(token)) {
boolean flag = false;
JSONObject params = (JSONObject) jsonObject.get("params");
JSONArray materialsArray = new JSONArray();
// 业务标识(与开户申请时推送的ywguid一致)
String ywguid = params.getString("ywguid");
if (StringUtil.isNotBlank(ywguid)) { // 获取流程提交得材料
SplitTableConfig conf = ShardingUtil.getSplitTableConfig("XXX_project_material");
CommonDao fbMaterialDao = CommonDao.getInstance(conf);
String sql = "SELECT * FROM XXX_project_material WHERE PROJECTGUID='"+ywguid+"' AND status >10 ";
List<XXXProjectMaterial> projectMaterialList = new ArrayList<XXXProjectMaterial>();
projectMaterialList = fbMaterialDao.findList(sql, XXXProjectMaterial.class);
if(projectMaterialList != null && projectMaterialList.size()>0){
for(XXXProjectMaterial XXXProjectMaterial : projectMaterialList){ // 获取流程提交得材料附件
String sql2 = "SELECT * FROM frame_attachinfo WHERE CLIENGGUID = '"+XXXProjectMaterial.getCliengguid()+"';";
List<FrameAttachInfo> attachInfoList = CommonDao.getInstance().findList(sql2, FrameAttachInfo.class);
if (attachInfoList != null && attachInfoList.size() > 0) {
// 材料内Json
JSONObject fileinfoJson = new JSONObject();
fileinfoJson.put("materialname", XXXProjectMaterial.getTaskmaterial());
fileinfoJson.put("filesource", "窗口上传");
JSONArray jsonArray = new JSONArray();
for (FrameAttachInfo attachinfo : attachInfoList) {
JSONObject certJson = new JSONObject();
// 附件下载地址
String loadUrl = "http://xxx.xx.xx.cn/xxxx/xxxx/rest/pages/basic/attach/attachAction/getContent?attachGuid="
+ attachinfo.getAttachGuid() + "&isCommondto=true";
// 材料名称
certJson.put("filename", attachinfo.getAttachFileName());
// 材料内容
certJson.put("filecontent", loadUrl);
jsonArray.add(certJson);
}
fileinfoJson.put("fileinfos", jsonArray);
materialsArray.add(fileinfoJson);
flag = true;
}
}
} materialJson.put("materials", materialsArray);
userareaJson.put("userarea", materialJson);
if (flag) {
result = JsonUtils.zwdtRestReturn("1", "获取申报材料接口调用成功!", userareaJson);
} else {
result = JsonUtils.zwdtRestReturn("0", "接口调用失败,原因是:未查到相关申报材料数据信息!", userareaJson);
} } else {
result = JsonUtils.zwdtRestReturn("0", "接口调用失败,原因是:未查到相关办件数据信息!", userareaJson);
}
}
else {
result = JsonUtils.zwdtRestReturn("0", "接口调用失败,原因是:token验证失败!", userareaJson);
}
}
catch (Exception e) {
e.printStackTrace();
xxxFrameDsManager.rollback();
result = JsonUtils.zwdtRestReturn("0", "接口调用失败,原因是:" + e.toString(), userareaJson);
}
finally {
xxxFrameDsManager.close();
}
return result;
} /**
* 录入对方返回得银行开户反馈信息
* @param param
* @return
*/
@RequestMapping(value = "/pushSZzwzxOpenAcountResult", method = RequestMethod.POST)
public String pushSZzwzxOpenAcountResult(@RequestBody String param) { String result = "";
try {
xxxFrameDsManager.begin(null);
// 参数转化为json对象
JSONObject jsonObject = (JSONObject) JSONObject.parse(param);
//时间格式化
//SimpleDateFormat sdf2 = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
//token验证
String token = jsonObject.getString("token");
if (GXConstant.checkToken(token)) {
JSONObject params = (JSONObject) jsonObject.get("params");
// 业务标识(与开户申请时推送的ywguid一致)
String ywguid = params.getString("ywguid");
// 银行名称
String bankname = params.getString("bankname");
// 银行编号
String bankno = params.getString("bankno");
// 账户名称
String accountname = params.getString("accountname");
// 账号
String accountnum = params.getString("accountnum");
// 开户日期
Date accountdate = params.getDate("accountdate");
// 是否同意开户
String isallow = params.getString("isallow");
// 银行开户审核意见
String bankopnion = params.getString("bankopnion");
// 商业银行开户审核时间
Date bankopniondate = params.getDate("bankopniondate");
String sql = "SELECT * FROM XXX_BKACC_FEEDBACK WHERE YWGUID ='"+ywguid+"' ";
XXXBkaccFeedback XXXBkaccFeedback = CommonDao.getInstance().find(sql, XXXBkaccFeedback.class);
int flag = 1;
if(XXXBkaccFeedback == null){
XXXBkaccFeedback = new XXXBkaccFeedback();
XXXBkaccFeedback.setRowguid(UUID.randomUUID().toString());
XXXBkaccFeedback.setOperatedate(new Date());
XXXBkaccFeedback.setYwguid(ywguid);
flag = 0;
} if(StringUtil.isNotBlank(bankno)){
XXXBkaccFeedback.setBankno(bankno);
}else{
return result = JsonUtils.zwdtRestReturn("0", "接口调用失败,原因是:银行编号(bankno)为空!", "");
} if(StringUtil.isNotBlank(bankname)){
XXXBkaccFeedback.setBankname(bankname);
} if(StringUtil.isNotBlank(accountname)){
XXXBkaccFeedback.setAccountname(accountname);
} if(StringUtil.isNotBlank(accountnum)){
XXXBkaccFeedback.setAccountnum(accountnum);
} if(StringUtil.isNotBlank(accountdate)){
XXXBkaccFeedback.setAccountdate(accountdate);
}
/*else{
return result = JsonUtils.zwdtRestReturn("0", "接口调用失败,原因是:开户日期(accountdate)为空!", "");
}*/ if(StringUtil.isNotBlank(isallow)){
XXXBkaccFeedback.setIsalllow(isallow);
}else{
return result = JsonUtils.zwdtRestReturn("0", "接口调用失败,原因是:是否同意开户(isallow)为空!", "");
} if(StringUtil.isNotBlank(bankopnion)){
XXXBkaccFeedback.setBankopinion(bankopnion);
}else{
return result = JsonUtils.zwdtRestReturn("0", "接口调用失败,原因是:银行开户审核意见(bankopnion)为空!", "");
} if(StringUtil.isNotBlank(bankopniondate)){
XXXBkaccFeedback.setBankopniondate(bankopniondate);
}
if(flag == 0){
CommonDao.getInstance().insert(XXXBkaccFeedback);
} else {
CommonDao.getInstance().update(XXXBkaccFeedback);
} result = JsonUtils.zwdtRestReturn("1", "接口调用成功,反馈信息已录入!", "");
} else {
return result = JsonUtils.zwdtRestReturn("0", "接口调用失败,原因是:token验证失败!", "");
} }
catch (Exception e) {
e.printStackTrace();
xxxFrameDsManager.rollback();
result = JsonUtils.zwdtRestReturn("0", "接口调用失败,原因是:" + e.toString(), "");
}
finally {
xxxFrameDsManager.close();
}
return result;
} }
给对方的接口地址就是 域名+工程名+rest+类注解+方法注解,我们系统运行着就可以了,给对方调用,开发过程中需要两边联调,可以用postman等工具进行来回接口的调用和数据的互相推送调试完成即可;
java接口对接——别人调用我们接口获取数据的更多相关文章
- 如何防止app接口被别人调用
app开发的时候,如何保护app的接口呢? 用https是我想到的办法,但是不知道怎么实现,所以就考虑用token,虽然不是绝对有效,但是能防止一般的用户来攻击,高手非要攻击,只能报警了吧. toke ...
- asp.net使用wsdl文件调用接口,以及调用SSL接口报错“根据验证过程 远程证书无效”的处理
1.调用wsdl接口,首先需要将wsdl文件转换为cs文件: 进入VS 开发人员命令提示行,输入如下命令: c:/Program Files/Microsoft Visual Studio 8/VC& ...
- 【Django+Element UI】使用一个接口文件,搞定分页获取数据,模糊查询后分页获取数据
1:序列化获取数据的接口设计 1:分页获取序列化数据 2:是个能传参数的接口 class Society(APIView): def post(self, request): keywords = s ...
- uni-app如何解决在for循环里调用异步请求获取数据顺序混乱问题?
总结/朱季谦 先前有一次做uni-app的js接口对接时,遇到过这样的情况,在for循环里,调用一个异步请求时,返回来的值顺序是乱的,因此,在以下的代码里,push到数组里的值,每次的顺序可能都是不一 ...
- 【Java】模拟登录教务网并获取数据
本文章仅做技术交流演示学习,请勿用于违法操作! 前期准备 首先我们需要到要模拟登录的网页,进行抓包操作. 使用Chrome浏览器打开系统的登录页面,按F12打开开发者工具 切换到Network选项卡 ...
- 页面单击按钮弹出modaldialog然后调用ajax处理程序获取数据,给父级页面控件赋值
<%@ Page Language="C#" AutoEventWireup="true" CodeFile="RefTopicList.asp ...
- 根据URL获取参数值得出json结果集,对外给一个接口让别人调用
背景:测试接口的时候,经常都是后端get\post请求直接返回json结果集,很想知道实现方式,虽然心中也大概了解如何实现,但还不如自己来一遍踏实! 先来看一下结果吧: 以下对一个web的get接口进 ...
- java如何写接口给别人调用
参考:https://blog.csdn.net/greatkendy123/article/details/52818466 java web开发(二) 接口开发
- java微信小程序调用支付接口(转)
简介:微信小程序支付这里的坑还是有的,所以提醒各位在编写的一定要注意!!! 1.首先呢,你需要准备openid,appid,还有申请微信支付后要设置一个32位的密钥,需要先生成一个sign,得到pre ...
随机推荐
- 算法学习之冒泡排序的C实现
冒泡排序是属于比较类的排序方式,简单易懂,但是效率不是很高,不及快排. #include "stdio.h" #include "time.h" void bu ...
- css实现表格的td里面的内容居中.
<td align="center" valign="middle">前一个是水平居中 后一个是垂直居中对应的css写法:<td style= ...
- logstash实战filter插件之grok(收集apache日志)
有些日志(比如apache)不像nginx那样支持json可以使用grok插件 grok利用正则表达式就行匹配拆分 预定义的位置在 /opt/logstash/vendor/bundle/jruby/ ...
- eclipse+gnuarm+使用报错
Description Resource Path Location TypeProgram "echo" not found in PATH stm32 Project Prop ...
- POJ--1690 (Your)((Term)((Project)))(字符串处理)
(Your)((Term)((Project))) Time Limit: 1000MS Memory Limit: 10000K Total Submissions: 3353 Accepted: ...
- POJ 2528 - Mayor's posters - [离散化+区间修改线段树]
题目链接:http://poj.org/problem?id=2528 Time Limit: 1000MS Memory Limit: 65536K Description The citizens ...
- SPOJ IM - Intergalactic Map - [拆点最大流]
题目链接:http://www.spoj.com/problems/IM/en/ Time limit:491 ms Memory limit:1572864 kB Code length Limit ...
- Kettle 4.2源码分析第一讲--Kettle 简介
Pentaho Data Integration(PDI)简介 1. PDI结构简介 图 1‑1 PDI核心组件 Spoon是构建ETL Jobs和Transformations的工具.Spoon可以 ...
- HDU-2680 Choose the best route 单向边+反向dijkstra
https://vjudge.net/problem/HDU-2680 题意:以起始点 终点 长度 给出一个图,已知可以从w个起点出发,求从任一起点到同一个终点s的最短路径.注意是单向边.m<1 ...
- Oracle HA 之 Server Pool 实战
--创建server pool的两种方式: 图形界面:console和dbca 演示-略 命令行工具:srvctl和crsctl --srvctl和crsctl创建server ...