在对接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. IT兄弟连 Java Web教程 经典案例2

    案例需求:写一个用户登录的html页面有账号和密码,并在登录的Servlet中获取登录的账号和密码,如果账号是abc密码是123则向浏览器输出登录成功,否则向浏览器输出登录失败. 案例实现: ●  h ...

  2. STL<queue>的使用

    队列是一种基本的线性数据结构.它满足先进先出(First In ,First Out)的原则. 我们可以应用这种数据结构实现很多复杂的问题.但每次要手写队列的相关函数并不省事,我们便可以应用STL中的 ...

  3. UITableViewCell添加点击时改变字体的颜色、背景、图标

    改变字体颜色:cell.textLabel.highlightedTextColor 改变背景颜色:cell.selectedBackgroundView (必须是图片哦) 改变图标颜色:cell.i ...

  4. SSM报错:No converter found for return value of type: class java.util.ArrayList at org.springframework.web.servlet.mvc.method.annotation.AbstractMessageConverterMethodProcessor.writeWithMessageConverter

    我使用的是SSM框架,是在编写测试RESTFUL接口的时候出现, @RequestMapping(value = "/selectAll", method = RequestMet ...

  5. Python while 1 和 while True 速度比较

    References http://legacy.python.org/dev/peps/pep-0285/http://stackoverflow.com/questions/3815359/whi ...

  6. Dima and Magic Guitar CodeForces - 366E

    Dima and Magic Guitar CodeForces - 366E 题意: http://blog.csdn.net/u011026968/article/details/38716425 ...

  7. 关于能ping通服务器但ssh登陆不上的问题

    一般来说能ping通服务器说明网没问题 这是可以查看一下防火墙的设置和ip的屏蔽设置 /etc/init.d/iptables status  查看防火墙状态 vim /etc/hosts.allow ...

  8. double发生精度丢失的解决办法

    发生精度丢失的原因: 个人理解:机器在运行时,使用2进制形式的计数方式,而我们日常生活中的计算是10进制的,对于整数的加减乘除,double还能适用,但是对于有小数的,则容易发生精度丢失,即用2进制表 ...

  9. MongoDB管理练习

    一.索引 1.插入10W条数据 文档内容为:{name:zs-i,age:1} 2016-06-07T14:35:57.041+0800 I CONTROL [initandlisten] > ...

  10. KMS算法

    解题:http://hihocoder.com/problemset/problem/1015 KMP算法是一种改进的字符串匹配算法,由D.E.Knuth,J.H.Morris和V.R.Pratt同时 ...