在对接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调用的更多相关文章

  1. SpringCloud03 Ribbon知识点、 Feign知识点、利用RestTemplate+Ribbon调用远程服务提供的资源、利用feign调用远程服务提供的资源、熔断

    1 远程服务资源的调用 1.1 古老的套路 在微服务出现之前,所有的远程服务资源必须通过RestTemplate或者HttpClient进行:但是这两者仅仅实现了远程服务资源的调用,并未提供负载均衡实 ...

  2. Xilium.CefGlue利用XHR实现Js调用c#方法

    防外链 博客园原文地址在这里http://www.cnblogs.com/shen6041/p/3442499.html 引 Xilium CefGlue是个不错的cef扩展工程,托管地址在这里 ht ...

  3. tp 框架 利用反射实现对象调用方法

    <?php class Person{ public $name="xiaoming"; function say(){ echo "i am ".$th ...

  4. 防止木马利用iframe框架来调用外域JS代码

    <!--防止木马利用iframe框架来调用外域JS代码,不过滤自己网站的域名的框架网页开始--><SCRIPT LANGUAGE="JavaScript"> ...

  5. 利用C#与AE调用GP工具

    转自原文 利用C#与AE调用GP工具 第一,首先要明确自己需要调用arctoolbox里面的什么工具,实现什么样的功能. 第三,编写command或tool工具,编写自己要的功能工具. 1)首先创建一 ...

  6. spring boot2X整合Consul一使用RestTemplate实现服务调用

    Consul可以用于实现分布式系统的服务发现与配置 服务调用有两种方式: A.使用RestTemplate 进行服务调用 负载均衡——通过Ribbon注解RestTemplate B.使用Feign ...

  7. 使用RestTemplate进行服务调用的几种方式

    首先我们在名为MSG的服务中定义一个简单的方法 @RestController public class ServerController { @GetMapping("/msg" ...

  8. Spring中RestTemplate进行Http调用

    Spring中的RestTemplate类源自spring-web,http调用中设置超时时间.设置连接池管理等非常重要,保证了系统的可用性,避免了长时间连接不上或者等待数据返回,拖垮系统. 现贴出工 ...

  9. 利用Resttemplate进行put请求

    开发中,最常用的是post.get这两种.今天我给大家展示一个利用put请求的demo,其实put请求跟post请求没啥区别,但是没有返回值. void put(String var1, @Nulla ...

随机推荐

  1. NOIp2016 蚯蚓 【二叉堆/答案单调性】By cellur925

    题目传送门 $Sol$ $50pts$:我们考虑$q==0$的情况,每次在所有的蚯蚓中找到一只长度最大的,这非常二叉堆.所以我们可以用一个优先队列,随便水一下就有50分.($NOIp$的分真这么好拿? ...

  2. Luogu P1069细胞分裂【分解质因数/数论】By cellur925

    题目传送门 发现这题真的坑超多啊...调了一晚上终于过了...我好菜啊qwq. 题意说的比较明白,让你求满足(si^k)%(m1^m2)==0的最小k值.然后看数据范围我们知道,我们肯定不能暴力的判断 ...

  3. C++类的默认函数

    在C++中,一个类有八个默认函数: 默认构造函数: 默认拷贝构造函数: 默认析构函数: 默认重载赋值运算符函数: 默认重载取址运算符函数: 默认重载取址运算符const函数: 默认移动构造函数(C++ ...

  4. Hibernate中的Query对象查询所有记录

    映射文件,核心文件,实体类,工具类的内容都不变直接看测试方法中的代码: package com.yinfu.test; import java.util.List; import org.hibern ...

  5. 递归(Recursion)

    递归是一种非常常用的算法,分为“递”和“归”两个步骤.满足递归算法有三个条件:1.一个问题,可以分解为子问题:2.该问题,与分解后的子问题,解决思路一致:3.存在终止条件.案例演示:假设有n个台阶,每 ...

  6. CSS3向外扩散的圆

    <!DOCTYPE html><html><head><meta http-equiv="Content-Type" content=&q ...

  7. 7.1 Java集合概述

    List 有序.重复的集合 Set 无序.不可重复的集合 Map 具有映射关系的集合 jdk1.5之后.Java增加了Queue体系集合,代表一种队列集合实现

  8. Oozie的作用

    Oozie的作用: 1.统一调度hadoop系统中常见的mr任务启动. hdfs操作. shell调度. hive操作等 2.使得复杂的依赖关系.时间触发.事件触发使用xml语言进行表达,开发效率提高 ...

  9. 基于坐标的自动化测试神器---Total Control快速入门

    1.Total Control简单介绍 一款能够在PC上控制手机的软件,同时可以使用PC 触摸屏.鼠标.键盘, 全面操控 Android 手机,只需通过 USB 或 WiFi 连接手机至电脑,即可随时 ...

  10. C#中的委托(转)

    C# 中的委托和事件 引言 委托 和 事件在 .Net Framework中的应用非常广泛,然而,较好地理解委托和事件对很多接触C#时间不长的人来说并不容易.它们就像是一道槛儿,过了这个槛的人,觉得真 ...