java接口对接——调用别人接口推送数据
实际开发中经常会遇到要和其他平台或系统对接的情况,实际操作就是互相调用别人的接口获取或者推送数据,
当我们调用别人接口推送数据时,需要对方给一个接口地址以及接口的规范文档,规范中要包括接口的明确入参及其格式,和接口返回状态的几种情况,
调用的后台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;
}
} }
java接口对接——调用别人接口推送数据的更多相关文章
- java通过url调用远程接口返回json数据
java通过url调用远程接口返回json数据,有用户名和密码验证, 转自 https://blog.csdn.net/wanglong1990421/article/details/78815856 ...
- Java之HttpClient调用WebService接口发送短信源码实战
摘要 Java之HttpClient调用WebService接口发送短信源码实战 一:接口文档 二:WSDL 三:HttpClient方法 HttpClient方法一 HttpClient方法二 Ht ...
- 使用SignalR ASP.NET Core来简单实现一个后台实时推送数据给Echarts展示图表的功能
什么是 SignalR ASP.NET Core ASP.NET Core SignalR 是一种开放源代码库,可简化将实时 web 功能添加到应用程序的功能. 实时 web 功能使服务器端代码可以立 ...
- Flume推送数据到SparkStreaming案例实战和内幕源码解密
本期内容: 1. Flume on HDFS案例回顾 2. Flume推送数据到Spark Streaming实战 3. 原理绘图剖析 1. Flume on HDFS案例回顾 上节课要求大家自己安装 ...
- httpclient post推送数据
客户端代码 /** * 从接口获取数据 * @param url 服务器接口地址 * @param json 传入的参数 若获取全部,此项为空 * @return 返回查询到的数据 * @throws ...
- Asp.net Core3.1+Vue 使用SignalR推送数据
本文就简单使用 往前端页面推送消息 SignalR 是什么 SignalR是一个.NET Core/.NET Framework的开源实时框架. SignalR的可使用Web Socket, Serv ...
- SQL Server 2000向SQL Server 2008 R2推送数据
[文章摘要]最近做的一个项目要获取存在于其他服务器的一些数据,为了安全起见,采用由其他“服务器”向我们服务器推送的方式实现.我们服务器使用的是SQL Server 2008 R2,其他“服务器”使用的 ...
- WebService推送数据,数据结构应该怎样定义?
存放在Session有一些弊端,不能实时更新.server压力增大等... 要求:将从BO拿回来的数据存放在UI Cache里面,数据库更新了就通过RemoveCallback "告诉&qu ...
- SuperSocket主动从服务器端推送数据到客户端
关键字: 主动推送, 推送数据, 客户端推送, 获取Session, 发送数据, 回话快照 通过Session对象发送数据到客户端 前面已经说过,AppSession 代表了一个逻辑的 socke ...
随机推荐
- python requests模块中返回时间elapsed解析
一.问题: Python 中requests库在发送http请求时相当方便好用,但在使用时一直受一个问题困扰,怎么才能查看请求时长呢? 自己写时间函数再相减?NO,这个方法肯定不行. 二.解决: 好吧 ...
- iOS - 音乐播放器之怎么获取音乐列表
方法一: 这个方法是通过获取到沙盒路径,来得到音乐的路径(使用这个方法需要把音乐放进沙盒) NSFileManager *manager = [NSFileManager defaultManager ...
- iOS - Block的简单使用
Block 的使用有两种: .独立Block .内联Block <一>独立Block 使用方式 一.定义一个Block Object,并调用. 1.定义 // 定义一个Bl ...
- Android开发小技巧之根据position判断ListView是否在显示
使用ListView的时候,会有判断指定项是否正在显示的需求,其实很简单,代码如下: private boolean isShowing(int position) { int showViewCou ...
- GitHub 终端加速最佳实践
终端加速 GitHub 方法的前置条件, 一是购买了加速服务或者租用 VPS 搭建加速服务, 二是系统是 macOS, 三是终端是 iTerm, 四是 Shell 是 zsh. 终端加速 GitHub ...
- TOP100summit 2017 七牛云许式伟:不用JAVA和C语言,我为什么坚持Go语言
本文编辑:Cynthia 2009年,谷歌发布第二款开源编程语言,Go语言.8年过去了,很多初创公司早期使用Go进行开发,包括云计算巨头Docker.而Go语言在中国的普及程度还比不上JAVA和C语言 ...
- cmake practice一文中安装可执行文件的方法
在学习cmake practice第四章中,第四章的任务如下 修改 Helloworld 支持安装在本节开头我们定义了本节的任务如下:1,为工程添加一个子目录 src,用来存储源代码;2,添加一个子目 ...
- postgresql+postgis+pgrouting安装步骤图解
1.在此(https://www.bigsql.org/postgresql/installers.jsp/)下载postgresql(开源数据库,gis行业推荐使用); 2.在此(http://wi ...
- SpringBoot @Transactional声明事务无效问题
查看系统支持的存储引擎:show engines; 查看表使用的引擎:show table status from db_name where name='table_name'; 修改表引擎方法: ...
- 【HTML5】HTML5的自学路线
HTML5的开发市场已越来越火爆,他已经与我们的生活息息相关,它也成为了我们生活中的一部分,比如我们在网上购物,玩手游等等,都存在html5的影子,也正是因为html5的高度影响力,吸引了许多人开始关 ...