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 ...
随机推荐
- Unity3D笔记十九 持久化数据
1.PlayerPrefs类(生命周期???) 1.1 保存与读取数据 在C#中类似缓存.Cookie.Session等保存数据的,但是有点区别的是在C#中如果在取值时没有取到默认值则返回值是NULL ...
- Java虚拟机四 常用Java虚拟机参数
主要涉及的知识点: 1.跟踪Java虚拟机的垃圾回收和类加载等信息: 2.配置Java虚拟机的堆空间: 3.配置永久区和Java栈. 4.学习虚拟机的服务器和客户端模式. 1.1 跟踪垃圾回收 Jav ...
- srilm使用杂记
训练n-gram语言模型 ngram-count -text train.txt -order -lm model -kndiscount -interpolate -gt3min -gt4min 计 ...
- pandas 数据类型转换
数据处理过程的数据类型 当利用pandas进行数据处理的时候,经常会遇到数据类型的问题,当拿到数据的时候,首先需要确定拿到的是正确类型的数据,一般通过数据类型的转化,这篇文章就介绍pandas里面的数 ...
- linux 命令行常用快捷键
linux命令行常用快捷键,区别于vim编辑器快捷键.熟练掌握下面的快捷键可提高操作linux的工作效率.当然最重要的是可以装屌. 1.移动光标快捷键Ctrl+a光标回到命令行首* Ctrl+e光标回 ...
- MySQL复制原理
mysql从3.23开始提供复制功能,复制指将主库的ddl和dml操作通过binlog文件传送到从库上执行,从而保持主库和从库数据同步.mysql支持一台主库同时向多台从库复制,从库同时也可以作为其他 ...
- Python排列函数:sort、sorted
排序函数介绍:sort()和sorted()都属于Python list的排序方法 区别:sort()属于永久性排列,直接改变该list: sorted属于暂时性排列,会产生一个新的序列. #sort ...
- mount --bind 的妙用
在固件开发过程中常常遇到这样的情况:为测试某个新功能,必需修改某个系统文件.而这个文件在只读文件系统上(总不能为一个小小的测试就重刷固件吧),或者是虽然文件可写,但是自己对这个改动没有把握,不愿意 ...
- Cross-origin resource sharing JSON with Padding 同源策略 JSONP 为什么form表单提交没有跨域问题,但ajax提交有跨域问题? XMLHttpRequest and the Fetch API follow the same-origin policy 预检请求(preflight request)
https://zh.wikipedia.org/wiki/跨来源资源共享 跨来源资源共享(CORS)是一份浏览器技术的规范,提供了 Web 服务从不同域传来沙盒脚本的方法,以避开浏览器的同源策略[1 ...
- promise VS future
Future and Promise are the two separate sides of an asynchronous operation. promise is used by the & ...