利用RestTemplate进行http调用
在对接API的时候,会涉及调用第三方的服务,这时候可以利用RestTemplate进行调用,下面给大家展示一个简单的调用demo。
package com.tanlu.user.api.controller.XJH; import com.alibaba.fastjson.JSON;
import com.tanlu.user.common.ResponseData;
import com.tanlu.user.common.XJH.Dto.XjhPushDto;
import com.tanlu.user.common.request.UploadRequest;
import com.tanlu.user.service.XJHPushService;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
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 java.io.IOException; @RestController
@RequestMapping(value = "/push")
public class XJHPushController {
private static Logger logger = LoggerFactory.getLogger(XJHPushController.class); @Autowired
private XJHPushService xjhPushService; /**
* xjh二推
* @param dto
* @return
*/
@RequestMapping(value = "/xjh/secondPush", method = RequestMethod.POST, produces = "application/json")
public ResponseData secondPush(@RequestBody XjhPushDto dto){
logger.info("XJH二推请求参数:"+ JSON.toJSON(dto));
ResponseData responseData = xjhPushService.secondPushData(dto);
return responseData;
} }
XJHPushService 接口代码:
public interface XJHPushService { ResponseData secondPushData(XjhPushDto dto); }
XJHPushService 接口实现类:
package com.tanlu.user.service.impl; import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONObject;
import com.tanlu.user.common.ResponseData;
import com.tanlu.user.common.XJH.Dto.XjhPushDto;
import com.tanlu.user.common.XJH.EmergencyContact;
import com.tanlu.user.common.XJH.Enum.XJHMarriedEnum;
import com.tanlu.user.common.XJH.Enum.XJHRelationEnum;
import com.tanlu.user.common.XJH.Info.*;
import com.tanlu.user.common.XJH.XJHReciveFirstPushResult;
import com.tanlu.user.common.XJH.XjhApplyDetail;
import com.tanlu.user.common.client.OpenClient;
import com.tanlu.user.common.dto.AuthNotifyDto;
import com.tanlu.user.common.dto.ResultDataDto;
import com.tanlu.user.common.dto.SystemAuditDto;
import com.tanlu.user.common.entity.*;
import com.tanlu.user.common.eum.ChannelEnum;
import com.tanlu.user.common.request.FirstPullRequest;
import com.tanlu.user.common.request.PullRequest;
import com.tanlu.user.common.request.SecondPullRequest;
import com.tanlu.user.common.request.UploadRequest;
import com.tanlu.user.common.response.GetGoodsResponse;
import com.tanlu.user.common.util.CdnUploadTools;
import com.tanlu.user.common.util.CommUtils;
import com.tanlu.user.common.util.JsonUtils;
import com.tanlu.user.common.vo.FirstPushVo;
import com.tanlu.user.mapper.*;
import com.tanlu.user.service.XJHPushService;
import org.apache.commons.lang3.StringUtils; import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.data.redis.core.RedisTemplate;
import org.springframework.http.*;
import org.springframework.stereotype.Service;
import org.springframework.web.client.RestTemplate; import java.io.DataInputStream;
import java.io.IOException;
import java.net.HttpURLConnection;
import java.net.URL;
import java.text.SimpleDateFormat;
import java.util.*;
import java.util.concurrent.TimeUnit; @Service
public class XJHPushServiceImpl implements XJHPushService {
private static final Logger logger = LoggerFactory.getLogger(XJHPushServiceImpl.class); @Value("${easyopen.url}")
private String easyOpenUrl; @Value("${easyopen.appKey}")
private String easyOpenAppKey; @Value("${easyopen.secret}")
private String easyOpenSecret; @Value("${pushCallBack.url}") //从配置文件获取具体的Url
private String pushCallBackUrl; @Autowired
private BorrowerMapper borrowerMapper;
@Autowired
private BorrowerDetailMapper borrowerDetailMapper;
@Autowired
private BwOrderMapper bwOrderMapper;
@Autowired
private BwPersonInfoMapper bwPersonInfoMapper;
@Autowired
private BwBorrowerPersonalMapper bwBorrowerPersonlMapper;
@Autowired
private BorrowerIdentityMapper borrowerIdentityMapper;
@Autowired
private BwIdentityCardMapper bwIdentityCardMapper;
@Autowired
private BwFaceidVerifyMapper bwFaceidVerifyMapper;
@Autowired
private BwOrderChannelMapper bwOrderChannelMapper;
@Autowired
private BwProductDictionaryMapper bwProductDictionaryMapper;
@Autowired
private BwWorkInfoMapper bwWorkInfoMapper;
@Autowired
private BwContactListMapper bwContactListMapper;
@Autowired
private BwOrderAuthMapper bwOrderAuthMapper;
@Autowired
private BwBankCardMapper bwBankCardMapper;
@Autowired
private BwAdjunctMapper bwAdjunctMapper;
@Autowired
private XyMobileDevInfoMapper xyMobileDevInfoMapper; @Autowired
private RestTemplate restTemplate;
@Autowired
private RedisTemplate redisTemplate;
/**
* 解析小金花二推数据
* @param dto
* @return
*/
@Override
public ResponseData secondPushData(XjhPushDto dto) {
ResponseData response = ResponseData.susscce();
//省去具体的业务逻辑操作//小金花二推回调
FirstPushVo vo = new FirstPushVo();
vo.setUserId(String.valueOf(bwOrder.getBorrowerId()));
vo.setChannelCode(dto.getChannelCode());
vo.setOrganCode(dto.getOrganCode());
vo.setName(borrower.getName());
vo.setPhone(borrower.getPhone());
vo.setIdcard(borrower.getIdCard());
vo.setOrderNo(proxyOrderNo);
vo.setOrderId(bwOrder.getOrderNo());
String jsonObj = JSON.toJSONString(vo);
HttpHeaders headers = new HttpHeaders();
headers.setContentType(MediaType.APPLICATION_JSON_UTF8);
HttpEntity<String> httpEntity = new HttpEntity(jsonObj,headers);
String requestUrl = pushCallBackUrl;
logger.info("XJH二推回调请求地址为:{}",requestUrl);
ResponseEntity<ResultDataDto> rsp = restTemplate.exchange(requestUrl, HttpMethod.POST,httpEntity,ResultDataDto.class);
logger.info("XJH二推回调结果:"+JSON.toJSON(rsp));
if (rsp.getStatusCodeValue() == 200){
logger.info("XJH二推回调成功");
}
return response;
} }
利用RestTemplate进行http调用的更多相关文章
- SpringCloud03 Ribbon知识点、 Feign知识点、利用RestTemplate+Ribbon调用远程服务提供的资源、利用feign调用远程服务提供的资源、熔断
1 远程服务资源的调用 1.1 古老的套路 在微服务出现之前,所有的远程服务资源必须通过RestTemplate或者HttpClient进行:但是这两者仅仅实现了远程服务资源的调用,并未提供负载均衡实 ...
- Xilium.CefGlue利用XHR实现Js调用c#方法
防外链 博客园原文地址在这里http://www.cnblogs.com/shen6041/p/3442499.html 引 Xilium CefGlue是个不错的cef扩展工程,托管地址在这里 ht ...
- tp 框架 利用反射实现对象调用方法
<?php class Person{ public $name="xiaoming"; function say(){ echo "i am ".$th ...
- 防止木马利用iframe框架来调用外域JS代码
<!--防止木马利用iframe框架来调用外域JS代码,不过滤自己网站的域名的框架网页开始--><SCRIPT LANGUAGE="JavaScript"> ...
- 利用C#与AE调用GP工具
转自原文 利用C#与AE调用GP工具 第一,首先要明确自己需要调用arctoolbox里面的什么工具,实现什么样的功能. 第三,编写command或tool工具,编写自己要的功能工具. 1)首先创建一 ...
- spring boot2X整合Consul一使用RestTemplate实现服务调用
Consul可以用于实现分布式系统的服务发现与配置 服务调用有两种方式: A.使用RestTemplate 进行服务调用 负载均衡——通过Ribbon注解RestTemplate B.使用Feign ...
- 使用RestTemplate进行服务调用的几种方式
首先我们在名为MSG的服务中定义一个简单的方法 @RestController public class ServerController { @GetMapping("/msg" ...
- Spring中RestTemplate进行Http调用
Spring中的RestTemplate类源自spring-web,http调用中设置超时时间.设置连接池管理等非常重要,保证了系统的可用性,避免了长时间连接不上或者等待数据返回,拖垮系统. 现贴出工 ...
- 利用Resttemplate进行put请求
开发中,最常用的是post.get这两种.今天我给大家展示一个利用put请求的demo,其实put请求跟post请求没啥区别,但是没有返回值. void put(String var1, @Nulla ...
随机推荐
- PTA PAT Judge 【模拟题,未完待续】
The ranklist of PAT is generated from the status list, which shows the scores of the submittions. Th ...
- Codeforces731D 80-th Level Archeology
考虑将两个单词变成有序,我们可以得到一个或者两个旋转次数的区间. 然后考虑将两组单词变成有序,比如[l,mid]和[mid+1,r],对于mid和mid+1这两个单词我们可以求出使他们有序的旋转次数的 ...
- jzoj5980. 【WC2019模拟12.27】字符串游戏
首先发现双方可以有一个默契,不管谁刻意,都可以把串变为诸如\(...101010101...\)的形式 所以先手要赢的话就是要在上面的基础之上加一个字符使其变为要求的子串 那么就是要求的子串中相邻两个 ...
- 洛谷P4841 城市规划(多项式求逆)
传送门 这题太珂怕了……如果是我的话完全想不出来…… 题解 //minamoto #include<iostream> #include<cstdio> #include< ...
- Django学习:模板继承和配置静态文件
一.模板继承 目的是:减少代码的冗余 语法: {% block classinfo %} {% endblock %} 具体步骤: 1.创建一个base.html文件,2.把要显示的页面的内容写在这里 ...
- easyUI Uncaught TypeError: Cannot read property 'length' of undefined
dataGrid json 封装数据格式为 List<Object> 格式
- ISCSI存储
slave-147作为服务端 需要安装的软件 [root@slave-147 ~]# yum install -y scsi-target-utils slave-148和slave-149作为客户端 ...
- MySQL日期处理
一.MySQL 获得当前日期时间 函数1.1 获得当前日期+时间(date + time)函数:now()mysql> select now(); +---------------------+ ...
- 【转】java编程思想第20章的注解例子用到的com.sun.mirror的jar包
Java編程思想>中的注解代码中引入过这么一个包(com.sun.mirror),书上说的是在Jdk中有个tools.jar中,引入这个包就每这个问题了,但是笔者用的是JDK 1.8,把这个包i ...
- Redis学习笔记(三)列表进阶
RPOPLPUSH source destination(弹出source列表最右端的元素,并推入destination的最左端,同时返回这个元素) BRPOPLPUSH source destina ...