- 浏览: 17255 次
最新评论
package com.pingan.ff.btoam.demo.service;
import java.util.Map;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
import org.springframework.beans.factory.InitializingBean;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.http.HttpEntity;
import org.springframework.http.HttpHeaders;
import org.springframework.http.HttpStatus;
import org.springframework.http.MediaType;
import org.springframework.http.ResponseEntity;
import org.springframework.stereotype.Service;
import org.springframework.util.LinkedMultiValueMap;
import org.springframework.util.MultiValueMap;
import org.springframework.web.client.RestTemplate;
import com.alibaba.fastjson.JSONObject;
import com.pingan.ff.btoam.demo.dto.ParamDTO;
import com.pingan.ff.btoam.demo.dto.RequestDTO;
import com.pingan.ff.btoam.demo.dto.ResponseDTO;
import com.pingan.ff.btoam.demo.util.Constant;
import com.pingan.ff.btoam.demo.util.SecurityUtils;
@Service
public class ClientServiceRestTemplateImpl implements ClientService, InitializingBean {
public static final Log logger = LogFactory.getLog(ClientServiceRestTemplateImpl.class);
@Autowired
private ClientConfig clientConfig;
private RestTemplate restTemplate;
@Override
public void afterPropertiesSet() throws Exception {
HttpsClientRequestFactory httpsClientRequestFactory = new HttpsClientRequestFactory();
httpsClientRequestFactory.setConnectTimeout(Integer.parseInt(clientConfig.getConnectTimeout()));
httpsClientRequestFactory.setReadTimeout(Integer.parseInt(clientConfig.getReadTimeout()));
this.restTemplate = new RestTemplate(httpsClientRequestFactory);
}
@Override
public JSONObject request(Map<String, Object> parameterMap, String isEncrypted) {
RequestDTO requestDto = SecurityUtils.signAndEncryptForRequest(parameterMap, clientConfig.getGateWayUrl(), clientConfig.getPrivateKey(), isEncrypted, clientConfig.getAesKey());
HttpEntity<MultiValueMap<String, String>> requestEntity = getRequestEntity(requestDto);
ResponseEntity<String> response = null;
long startTime = System.currentTimeMillis();
logger.info("request begin");
try {
response = restTemplate.postForEntity(requestDto.getRequestUrl(), requestEntity, String.class);
} catch (Exception e) {
logger.error("request failed exception:", e);
} finally {
logger.info("request end cost:" + (System.currentTimeMillis() - startTime) + "ms");
}
if (response == null || response.getStatusCode() != HttpStatus.OK) {
logger.error("request failed response is null or httpStatus="+ response==null? "": response.getStatusCode());
return getResult("","请求失败");
}
JSONObject responseJSON = JSONObject.parseObject(response.getBody());
boolean isverfiy = SecurityUtils.decryptAndVerfiyForResponse(responseJSON, clientConfig.getAesKey(), clientConfig.getPublicKey());
if (!isverfiy) {
return getResult("","返回数据验签失败");
}
JSONObject dataJson = (JSONObject) responseJSON.get(Constant.DATA);
dataJson.remove(Constant.REQUESTID);
dataJson.remove(Constant.COMPONENTCODE);
dataJson.remove(Constant.ISENCRYPTED);
return dataJson;
}
private JSONObject getResult(String code, String msg){
JSONObject result = new JSONObject();
result.put(Constant.RESPONSECODE, code);
result.put(Constant.RESPONSEMSG, msg);
return result;
}
private HttpEntity<MultiValueMap<String, String>> getRequestEntity(RequestDTO requestDto) {
HttpHeaders headers = new HttpHeaders();
headers.setContentType(MediaType.APPLICATION_FORM_URLENCODED);
MultiValueMap<String, String> bodyParams = new LinkedMultiValueMap<String, String>();
bodyParams.add(Constant.SIGN, requestDto.getSign());
bodyParams.add(Constant.REQUESTDATA, requestDto.getRequestData());
bodyParams.add(Constant.ISENCRYPTED, requestDto.getIsEncrypted());
logger.info("request URL: " + requestDto.getRequestUrl());
logger.info("request params sign:" + requestDto.getSign() + ",isEncrypted:" + requestDto.getIsEncrypted() + ",requestData:" + requestDto.getRequestData());
HttpEntity<MultiValueMap<String, String>> requestEntity = new HttpEntity<MultiValueMap<String, String>>(bodyParams, headers);
return requestEntity;
}
@Override
public ResponseDTO request(ParamDTO params, String isEncrypted) {
Map<String, Object> paramDataMap = (JSONObject) JSONObject.toJSON(params);
JSONObject resultJSON = request(paramDataMap, isEncrypted);
return JSONObject.toJavaObject(resultJSON, ResponseDTO.class);
}
}
import java.util.Map;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
import org.springframework.beans.factory.InitializingBean;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.http.HttpEntity;
import org.springframework.http.HttpHeaders;
import org.springframework.http.HttpStatus;
import org.springframework.http.MediaType;
import org.springframework.http.ResponseEntity;
import org.springframework.stereotype.Service;
import org.springframework.util.LinkedMultiValueMap;
import org.springframework.util.MultiValueMap;
import org.springframework.web.client.RestTemplate;
import com.alibaba.fastjson.JSONObject;
import com.pingan.ff.btoam.demo.dto.ParamDTO;
import com.pingan.ff.btoam.demo.dto.RequestDTO;
import com.pingan.ff.btoam.demo.dto.ResponseDTO;
import com.pingan.ff.btoam.demo.util.Constant;
import com.pingan.ff.btoam.demo.util.SecurityUtils;
@Service
public class ClientServiceRestTemplateImpl implements ClientService, InitializingBean {
public static final Log logger = LogFactory.getLog(ClientServiceRestTemplateImpl.class);
@Autowired
private ClientConfig clientConfig;
private RestTemplate restTemplate;
@Override
public void afterPropertiesSet() throws Exception {
HttpsClientRequestFactory httpsClientRequestFactory = new HttpsClientRequestFactory();
httpsClientRequestFactory.setConnectTimeout(Integer.parseInt(clientConfig.getConnectTimeout()));
httpsClientRequestFactory.setReadTimeout(Integer.parseInt(clientConfig.getReadTimeout()));
this.restTemplate = new RestTemplate(httpsClientRequestFactory);
}
@Override
public JSONObject request(Map<String, Object> parameterMap, String isEncrypted) {
RequestDTO requestDto = SecurityUtils.signAndEncryptForRequest(parameterMap, clientConfig.getGateWayUrl(), clientConfig.getPrivateKey(), isEncrypted, clientConfig.getAesKey());
HttpEntity<MultiValueMap<String, String>> requestEntity = getRequestEntity(requestDto);
ResponseEntity<String> response = null;
long startTime = System.currentTimeMillis();
logger.info("request begin");
try {
response = restTemplate.postForEntity(requestDto.getRequestUrl(), requestEntity, String.class);
} catch (Exception e) {
logger.error("request failed exception:", e);
} finally {
logger.info("request end cost:" + (System.currentTimeMillis() - startTime) + "ms");
}
if (response == null || response.getStatusCode() != HttpStatus.OK) {
logger.error("request failed response is null or httpStatus="+ response==null? "": response.getStatusCode());
return getResult("","请求失败");
}
JSONObject responseJSON = JSONObject.parseObject(response.getBody());
boolean isverfiy = SecurityUtils.decryptAndVerfiyForResponse(responseJSON, clientConfig.getAesKey(), clientConfig.getPublicKey());
if (!isverfiy) {
return getResult("","返回数据验签失败");
}
JSONObject dataJson = (JSONObject) responseJSON.get(Constant.DATA);
dataJson.remove(Constant.REQUESTID);
dataJson.remove(Constant.COMPONENTCODE);
dataJson.remove(Constant.ISENCRYPTED);
return dataJson;
}
private JSONObject getResult(String code, String msg){
JSONObject result = new JSONObject();
result.put(Constant.RESPONSECODE, code);
result.put(Constant.RESPONSEMSG, msg);
return result;
}
private HttpEntity<MultiValueMap<String, String>> getRequestEntity(RequestDTO requestDto) {
HttpHeaders headers = new HttpHeaders();
headers.setContentType(MediaType.APPLICATION_FORM_URLENCODED);
MultiValueMap<String, String> bodyParams = new LinkedMultiValueMap<String, String>();
bodyParams.add(Constant.SIGN, requestDto.getSign());
bodyParams.add(Constant.REQUESTDATA, requestDto.getRequestData());
bodyParams.add(Constant.ISENCRYPTED, requestDto.getIsEncrypted());
logger.info("request URL: " + requestDto.getRequestUrl());
logger.info("request params sign:" + requestDto.getSign() + ",isEncrypted:" + requestDto.getIsEncrypted() + ",requestData:" + requestDto.getRequestData());
HttpEntity<MultiValueMap<String, String>> requestEntity = new HttpEntity<MultiValueMap<String, String>>(bodyParams, headers);
return requestEntity;
}
@Override
public ResponseDTO request(ParamDTO params, String isEncrypted) {
Map<String, Object> paramDataMap = (JSONObject) JSONObject.toJSON(params);
JSONObject resultJSON = request(paramDataMap, isEncrypted);
return JSONObject.toJavaObject(resultJSON, ResponseDTO.class);
}
}
发表评论
-
aaa
2018-03-26 17:23 01、前后端安全方案(防篡改、防重放、敏感信息加解密、防XSS攻 ... -
ssssss
2018-03-26 16:16 02015年年度计划 1、熟悉环境、架构、开发流程 2、业务模 ... -
golsing
2018-03-26 16:14 02015年年度计划 1、熟悉环境、架构、开发流程 2、业务模 ... -
ClientService
2018-03-10 17:34 421package com.pingan.ff.btoam.dem ... -
ClientConfig
2018-03-10 17:33 384package com.pingan.ff.btoam.dem ... -
responseDTO
2018-03-10 17:32 522package com.pingan.ff.btoam.dem ... -
配置项
2018-03-10 17:31 452client.connectTimeout=60000 cli ... -
HttpsClientRequestFactory
2018-03-08 20:48 1408package com.pingan.ff.btoam.dem ... -
HttpsTest
2018-03-08 20:23 813package com.pingan.ff.btoam.dem ... -
dfdfdf
2018-03-08 20:22 450<!--连接池管理 --> <bean ... -
sdds
2018-03-08 20:19 54package com.pingan.ff.esb.proxy ... -
ddsd
2018-03-08 20:29 610import java.security.cert.Certi ... -
测试一下
2017-08-23 13:50 544测试测试测试测试测试测试测试 -
面经面经
2017-03-29 19:13 514一、简历 简历里面需要 ... -
浅谈https\ssl\数字证书
2015-03-03 11:15 460http://www.cnblogs.com/P_Chou/a ... -
Java多线程总结之线程安全队列Queue
2015-01-07 15:20 819在Java多线程应用中,队列的使用率很高,多数生产消费模型的 ... -
面试问题
2015-01-07 14:45 544今天被架构师问了一连串的问题,估计问了有一个多小时 ... -
http长连接与短连接
2015-01-05 17:34 5271. HTTP协议与TCP/IP协议的关系 HTTP的长 ... -
ZooKeeper原理
2014-12-30 09:33 605ZooKeeper是一个分布式的,开放源码的分布式应用 ... -
diamond
2014-12-30 09:23 781大家好,今天开始为大家带来我们通用产品团队的产品 —— di ...
相关推荐
Node.js,简称Node,是一个开源且跨平台的JavaScript运行时环境,它允许在浏览器外运行JavaScript代码。Node.js于2009年由Ryan Dahl创立,旨在创建高性能的Web服务器和网络应用程序。它基于Google Chrome的V8 JavaScript引擎,可以在Windows、Linux、Unix、Mac OS X等操作系统上运行。 Node.js的特点之一是事件驱动和非阻塞I/O模型,这使得它非常适合处理大量并发连接,从而在构建实时应用程序如在线游戏、聊天应用以及实时通讯服务时表现卓越。此外,Node.js使用了模块化的架构,通过npm(Node package manager,Node包管理器),社区成员可以共享和复用代码,极大地促进了Node.js生态系统的发展和扩张。 Node.js不仅用于服务器端开发。随着技术的发展,它也被用于构建工具链、开发桌面应用程序、物联网设备等。Node.js能够处理文件系统、操作数据库、处理网络请求等,因此,开发者可以用JavaScript编写全栈应用程序,这一点大大提高了开发效率和便捷性。 在实践中,许多大型企业和组织已经采用Node.js作为其Web应用程序的开发平台,如Netflix、PayPal和Walmart等。它们利用Node.js提高了应用性能,简化了开发流程,并且能更快地响应市场需求。
Node.js,简称Node,是一个开源且跨平台的JavaScript运行时环境,它允许在浏览器外运行JavaScript代码。Node.js于2009年由Ryan Dahl创立,旨在创建高性能的Web服务器和网络应用程序。它基于Google Chrome的V8 JavaScript引擎,可以在Windows、Linux、Unix、Mac OS X等操作系统上运行。 Node.js的特点之一是事件驱动和非阻塞I/O模型,这使得它非常适合处理大量并发连接,从而在构建实时应用程序如在线游戏、聊天应用以及实时通讯服务时表现卓越。此外,Node.js使用了模块化的架构,通过npm(Node package manager,Node包管理器),社区成员可以共享和复用代码,极大地促进了Node.js生态系统的发展和扩张。 Node.js不仅用于服务器端开发。随着技术的发展,它也被用于构建工具链、开发桌面应用程序、物联网设备等。Node.js能够处理文件系统、操作数据库、处理网络请求等,因此,开发者可以用JavaScript编写全栈应用程序,这一点大大提高了开发效率和便捷性。 在实践中,许多大型企业和组织已经采用Node.js作为其Web应用程序的开发平台,如Netflix、PayPal和Walmart等。它们利用Node.js提高了应用性能,简化了开发流程,并且能更快地响应市场需求。
毕业设计Python基于LSTM的多步向前手术风险预测项目源代码+数据+论文
Node.js,简称Node,是一个开源且跨平台的JavaScript运行时环境,它允许在浏览器外运行JavaScript代码。Node.js于2009年由Ryan Dahl创立,旨在创建高性能的Web服务器和网络应用程序。它基于Google Chrome的V8 JavaScript引擎,可以在Windows、Linux、Unix、Mac OS X等操作系统上运行。 Node.js的特点之一是事件驱动和非阻塞I/O模型,这使得它非常适合处理大量并发连接,从而在构建实时应用程序如在线游戏、聊天应用以及实时通讯服务时表现卓越。此外,Node.js使用了模块化的架构,通过npm(Node package manager,Node包管理器),社区成员可以共享和复用代码,极大地促进了Node.js生态系统的发展和扩张。 Node.js不仅用于服务器端开发。随着技术的发展,它也被用于构建工具链、开发桌面应用程序、物联网设备等。Node.js能够处理文件系统、操作数据库、处理网络请求等,因此,开发者可以用JavaScript编写全栈应用程序,这一点大大提高了开发效率和便捷性。 在实践中,许多大型企业和组织已经采用Node.js作为其Web应用程序的开发平台,如Netflix、PayPal和Walmart等。它们利用Node.js提高了应用性能,简化了开发流程,并且能更快地响应市场需求。
医院分诊管理管理系统是典型的信息管理系统,其主要包括后台数据库的建立和维护以及前端应用程序的开发两个方面。对于前者要求建立起一致性、完整性强和安全性好的数据库。而对于后者则要求应用程序具有功能完备,易使用等特点。经过分析如此情况,决定使用Java语言进行开发,利用其提供的各种面向对象的开发工具,数据库方面使用当前比较流行的mysql。 本系统主要包括以下功能:系统设置功能、患者管理模块、分诊管理功能、诊断管理功能。1) 系统设置模块 系统设置包括权限管理和用户信息。此模块主要功能包括: ·添加、修改、删除和查看用户信息; ·给用户分配权限; 2) 患者管理功能 此模块的主要功能包括: ·包括添加、修改、删除和查看患者信息; 3) 科室管理模块 此模块主要功能包括: ·包括添加、修改、删除和查看信息; 4) 分诊管理模块 本模块用于对分诊信息进行统计和查询,主要包括: ·分诊排队; ·分诊叫号; 关键字 面向对象;数据库;java;医院分诊管理系统;mysql。
心电图机监控软件 vc++ ,心电图机数据采集 , 曲线显示, 诊断 , 病历
Node.js,简称Node,是一个开源且跨平台的JavaScript运行时环境,它允许在浏览器外运行JavaScript代码。Node.js于2009年由Ryan Dahl创立,旨在创建高性能的Web服务器和网络应用程序。它基于Google Chrome的V8 JavaScript引擎,可以在Windows、Linux、Unix、Mac OS X等操作系统上运行。 Node.js的特点之一是事件驱动和非阻塞I/O模型,这使得它非常适合处理大量并发连接,从而在构建实时应用程序如在线游戏、聊天应用以及实时通讯服务时表现卓越。此外,Node.js使用了模块化的架构,通过npm(Node package manager,Node包管理器),社区成员可以共享和复用代码,极大地促进了Node.js生态系统的发展和扩张。 Node.js不仅用于服务器端开发。随着技术的发展,它也被用于构建工具链、开发桌面应用程序、物联网设备等。Node.js能够处理文件系统、操作数据库、处理网络请求等,因此,开发者可以用JavaScript编写全栈应用程序,这一点大大提高了开发效率和便捷性。 在实践中,许多大型企业和组织已经采用Node.js作为其Web应用程序的开发平台,如Netflix、PayPal和Walmart等。它们利用Node.js提高了应用性能,简化了开发流程,并且能更快地响应市场需求。
Scratch是一款专为儿童设计的图形化编程语言,通过直观易懂的界面和丰富的功能模块,帮助孩子们理解编程的基本概念,激发创新思维,培养解决问题的能力。本文将全面介绍Scratch的特点、应用及教育意义,为广大家长和教育工作者提供有益的参考。 Scratch作为一款专为儿童设计的图形化编程语言,以其直观易懂的界面和丰富的功能模块,为儿童编程启蒙教育提供了有力的支持。它不仅能够帮助孩子们掌握基本的编程技能,还能够培养他们的逻辑思维能力、创新精神和团队合作能力。因此,广大家长和教育工作者应该充分利用Scratch这一工具,为孩子们创造一个充满乐趣和挑战的编程学习环境,让他们在快乐中成长,为未来的学习和发展打下坚实的基础。
Node.js,简称Node,是一个开源且跨平台的JavaScript运行时环境,它允许在浏览器外运行JavaScript代码。Node.js于2009年由Ryan Dahl创立,旨在创建高性能的Web服务器和网络应用程序。它基于Google Chrome的V8 JavaScript引擎,可以在Windows、Linux、Unix、Mac OS X等操作系统上运行。 Node.js的特点之一是事件驱动和非阻塞I/O模型,这使得它非常适合处理大量并发连接,从而在构建实时应用程序如在线游戏、聊天应用以及实时通讯服务时表现卓越。此外,Node.js使用了模块化的架构,通过npm(Node package manager,Node包管理器),社区成员可以共享和复用代码,极大地促进了Node.js生态系统的发展和扩张。 Node.js不仅用于服务器端开发。随着技术的发展,它也被用于构建工具链、开发桌面应用程序、物联网设备等。Node.js能够处理文件系统、操作数据库、处理网络请求等,因此,开发者可以用JavaScript编写全栈应用程序,这一点大大提高了开发效率和便捷性。 在实践中,许多大型企业和组织已经采用Node.js作为其Web应用程序的开发平台,如Netflix、PayPal和Walmart等。它们利用Node.js提高了应用性能,简化了开发流程,并且能更快地响应市场需求。
波士顿.py
这份文档是一份详细的Fortran语言学习规划及基本案例说明,对于希望学习和掌握Fortran编程语言的用户来说,是一份极为宝贵的参考资料。 首先,文档明确了学习Fortran的背景与目标,有助于学习者明确自己的学习方向和目的,从而更有针对性地进行学习。同时,文档还详细规划了学习内容和时间安排,从基础知识学习到项目实践与综合应用,每个阶段的学习任务都清晰明了,为学习者提供了一个系统的学习框架。 其次,文档还介绍了Fortran语言的基本用法和案例,包括变量声明与赋值、数组、程序结构与流程控制等方面的知识,并通过实例练习来帮助学习者加深对知识点的理解和应用。这些案例不仅具有代表性,而且具有很强的实用性,可以帮助学习者更好地掌握Fortran编程技能。 此外,文档还提供了学习方法与资源的建议,为学习者提供了多样化的学习途径和参考资料。无论是官方文档、教材与参考书目,还是在线学习平台和科研团队的经验分享,都为学习者提供了丰富的学习资源,有助于学习者更全面地了解Fortran语言的特点和应用。
answer.sql
Sora AI Video Preview Case Sora AI 视频模版项目,React全栈快速部署.zip
最新试用版发货100虚拟商品自动发货系统 源码免费下载.rar最新试用版发货100虚拟商品自动发货系统 源码免费下载.rar
linux
Node.js,简称Node,是一个开源且跨平台的JavaScript运行时环境,它允许在浏览器外运行JavaScript代码。Node.js于2009年由Ryan Dahl创立,旨在创建高性能的Web服务器和网络应用程序。它基于Google Chrome的V8 JavaScript引擎,可以在Windows、Linux、Unix、Mac OS X等操作系统上运行。 Node.js的特点之一是事件驱动和非阻塞I/O模型,这使得它非常适合处理大量并发连接,从而在构建实时应用程序如在线游戏、聊天应用以及实时通讯服务时表现卓越。此外,Node.js使用了模块化的架构,通过npm(Node package manager,Node包管理器),社区成员可以共享和复用代码,极大地促进了Node.js生态系统的发展和扩张。 Node.js不仅用于服务器端开发。随着技术的发展,它也被用于构建工具链、开发桌面应用程序、物联网设备等。Node.js能够处理文件系统、操作数据库、处理网络请求等,因此,开发者可以用JavaScript编写全栈应用程序,这一点大大提高了开发效率和便捷性。 在实践中,许多大型企业和组织已经采用Node.js作为其Web应用程序的开发平台,如Netflix、PayPal和Walmart等。它们利用Node.js提高了应用性能,简化了开发流程,并且能更快地响应市场需求。
Node.js,简称Node,是一个开源且跨平台的JavaScript运行时环境,它允许在浏览器外运行JavaScript代码。Node.js于2009年由Ryan Dahl创立,旨在创建高性能的Web服务器和网络应用程序。它基于Google Chrome的V8 JavaScript引擎,可以在Windows、Linux、Unix、Mac OS X等操作系统上运行。 Node.js的特点之一是事件驱动和非阻塞I/O模型,这使得它非常适合处理大量并发连接,从而在构建实时应用程序如在线游戏、聊天应用以及实时通讯服务时表现卓越。此外,Node.js使用了模块化的架构,通过npm(Node package manager,Node包管理器),社区成员可以共享和复用代码,极大地促进了Node.js生态系统的发展和扩张。 Node.js不仅用于服务器端开发。随着技术的发展,它也被用于构建工具链、开发桌面应用程序、物联网设备等。Node.js能够处理文件系统、操作数据库、处理网络请求等,因此,开发者可以用JavaScript编写全栈应用程序,这一点大大提高了开发效率和便捷性。 在实践中,许多大型企业和组织已经采用Node.js作为其Web应用程序的开发平台,如Netflix、PayPal和Walmart等。它们利用Node.js提高了应用性能,简化了开发流程,并且能更快地响应市场需求。
源代码-access 管理 系统 API 文件.zip
基于Qt的频谱分析器,修改于Spek,支持Windows和Linux平台