package com.kakarote.crm.utils;
import cn.hutool.core.util.ObjectUtil;
import org.apache.http.client.ResponseHandler;
import org.apache.http.client.methods.HttpGet;
import org.apache.http.client.methods.HttpPost;
import org.apache.http.entity.StringEntity;
import org.apache.http.impl.client.BasicResponseHandler;
import org.apache.http.impl.client.CloseableHttpClient;
import org.apache.http.impl.client.HttpClients;
/**
* create by Dell on 2020/6/17
*/
public class HttpUtil {
//get请求
public static String doGet(String url,String authValue){
String result = null;
CloseableHttpClient httpClient = HttpClients.createDefault();
ResponseHandler<String> responseHandler = new BasicResponseHandler();
try {
HttpGet httpGet = new HttpGet(url);
httpGet.setHeader("Content-type", "application/json");
if(!ObjectUtil.isNull(authValue)){
httpGet.setHeader("Authorization","Bearer "+authValue);
}
result = httpClient.execute(httpGet, responseHandler);
} catch (Exception e) {
e.printStackTrace();
}
finally {
try {
httpClient.close();
} catch (Exception e) {
System.out.println(e.getMessage());
}
}
return result ;
} // post请求参数为json格式
public static String doJsonPost(String url, String json,String authValue) {
String result = null;
CloseableHttpClient httpClient = HttpClients.createDefault();
ResponseHandler<String> responseHandler = new BasicResponseHandler();
try {
HttpPost httpPost = new HttpPost(url);
StringEntity requestEntity = new StringEntity(json, "utf-8");
requestEntity.setContentEncoding("UTF-8");
httpPost.setHeader("Content-type", "application/json");
if(!ObjectUtil.isNull(authValue)){
httpPost.setHeader("Authorization","Bearer "+authValue);
}
httpPost.setEntity(requestEntity);
result = httpClient.execute(httpPost, responseHandler);
} catch (Exception e) {
System.out.println(e.getMessage());
} finally {
try {
httpClient.close();
} catch (Exception e) {
System.out.println(e.getMessage());
}
}
return result;
}
}

  

package com.kakarote.crm.utils;
import cn.hutool.core.util.ObjectUtil;
import com.alibaba.fastjson.JSONObject;
import com.kakarote.crm.constant.SapConstant;
import com.kakarote.crm.entity.authorize.Authorize;
import com.kakarote.crm.entity.authorize.Token;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.stereotype.Component;
import java.util.Date; /**
* create by Dell on 2020/7/11
*/
@Component
public class SapUtil {
public static String readUrl ;
public static String readPort ;
public static String readUsername ;
public static String readPassword;
public static String writeUrl ;
public static String writePort ;
public static String writeUsername ;
public static String writePassword; @Value("${sap.api.read.url}")
public void setReadUrl(String readUrl){
SapUtil.readUrl = readUrl;
}
@Value("${sap.api.read.port}")
private void setReadPort(String readPort){
SapUtil.readPort = readPort;
}
@Value("${sap.api.read.username}")
public void setReadUsername(String readUsername) {
SapUtil.readUsername = readUsername;
}
@Value("${sap.api.read.password}")
public void setReadPassword(String readPassword) {
SapUtil.readPassword = readPassword;
}
@Value("${sap.api.write.url}")
public void setWriteUrl(String writeUrl) {
SapUtil.writeUrl = writeUrl;
}
@Value("${sap.api.write.port}")
public void setWritePort(String writePort) {
SapUtil.writePort = writePort;
}
@Value("${sap.api.write.username}")
public void setWriteUsername(String writeUsername) {
SapUtil.writeUsername = writeUsername;
}
@Value("${sap.api.write.password}")
public void setWritePassword(String writePassword) {
SapUtil.writePassword = writePassword;
} private static String readToken = "";
private static long readCreateDate = 0l; private static String writeToken ="";
private static long writeCreateDate = 0l ; public static String getReadToken(){
if("".equals(readToken) || ObjectUtil.isNull(readToken) || ObjectUtil.isNull(readToken)){
return getReadToken(readUsername,readPassword);
}
else{
if(new Date().getTime() - readCreateDate >= 43000000l ){
return getReadToken(readUsername,readPassword);
}
}
return readToken;
} public static String getWriteToken(){
if("".equals(writeToken) || ObjectUtil.isNull(writeToken) || ObjectUtil.isNull(writeToken)){
return getWriteToken(writeUsername,writePassword);
}
else{
if(new Date().getTime() - writeCreateDate >= 43000000l ){
return getWriteToken(writeUsername,writePassword);
}
}
return writeToken;
} public static String getReadToken(String username,String password){
Authorize auth = new Authorize();
auth.setUsername(username);
auth.setPassword(password);
try {
String res = HttpUtil.doJsonPost(SapConstant.READ_LOGIN_AUTHORIZE, JSONObject.toJSONString(auth),null);
if(!ObjectUtil.isNull(res)&&!ObjectUtil.isNull(res)){
Token token = JSONObject.parseObject(res, Token.class);
readToken=token.getToken();
readCreateDate = new Date().getTime();
}
}
catch(Exception e){
// TODO
}
return readToken;
} public static String getWriteToken(String username,String password){
Authorize auth = new Authorize();
auth.setUsername(username);
auth.setPassword(password);
try {
String res = HttpUtil.doJsonPost(SapConstant.WRITE_LOGIN_AUTHORIZE, JSONObject.toJSONString(auth),null);
if(!ObjectUtil.isNull(res)&&!ObjectUtil.isNull(res)){
Token token = JSONObject.parseObject(res, Token.class);
writeToken=token.getToken();
writeCreateDate = new Date().getTime();
}
}
catch(Exception e){
// TODO
}
return writeToken;
} }

  

package com.kakarote.crm.constant;
import com.kakarote.crm.utils.SapUtil;
/**
*
*/
public interface SapConstant { String READ_LOGIN_AUTHORIZE = SapUtil.readUrl+":"+SapUtil.readPort+"/api/login/authorize";
String WRITE_LOGIN_AUTHORIZE = SapUtil.writeUrl+":"+SapUtil.writePort+"/api/login/authorize"; String PARTNER_INIT = SapUtil.readUrl+":"+SapUtil.readPort+"/api/partner/init?Company={0}&CardType={1}";
String PARTNER_DETAIL = SapUtil.readUrl+":"+SapUtil.readPort+"/api/partner/detail?Company={0}&CardCode={1}";
String PARTNER_QUERY = SapUtil.readUrl+":"+SapUtil.readPort+"/api/partner/query?Company={0}&CardType={1}&Partner={2}";
String PARTNER_SPECPRICES_DETAIL = SapUtil.readUrl+":"+SapUtil.readPort+"/api/partner/specprices/detail?Company={0}&CardCode={1}"; }

  yml文件配置

spring:
redis:
host: ${REDIS_HOST:localhost}
port: ${REDIS_PORT:6379}
password: ${REDIS_PASSWORD:xxxxx}
database: 13
lettuce:
pool:
max-active: 300
datasource:
url: jdbc:${DATASOURCE_DBTYPE:mysql}://${DATASOURCE_HOST:127.0.0.1}:${DATASOURCE_PORT:3306}/wk_crm_single?characterEncoding=utf8&useSSL=false&zeroDateTimeBehavior=convertToNull&tinyInt1isBit=false&serverTimezone=Asia/Shanghai
username: ${DATASOURCE_USERNAME:root}
password: ${DATASOURCE_PASSWORD:xxxx}
elasticsearch:
rest:
uris: 127.0.0.1:xx00
username:
password:
#sap配置
sap:
api:
read:
url: http://172.19.xxx.xx
port: xxxx
username: admin
password: xxxx
write:
url: http://172.19.xxx.xx
port: xxxx
username: admin
password: xxxx

  

package com.kakarote.crm.entity.authorize;

import lombok.Data;

/**
* create by Dell on 2020/7/13
*/
@Data
public class Authorize {
private String username ;
private String password ;
}

  

package com.kakarote.crm.entity.authorize;

import lombok.Data;

/**
* create by Dell on 2020/7/13
*/
@Data
public class Token {
private String token;
}

  

package com.kakarote.crm.controller.sap;
import com.alibaba.fastjson.JSONObject;
import com.kakarote.crm.constant.SapConstant;
import com.kakarote.crm.utils.HttpUtil;
import com.kakarote.crm.utils.SapUtil;
import io.swagger.annotations.Api;
import lombok.extern.slf4j.Slf4j;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import java.text.MessageFormat;
import java.util.Map; /**
* @author
* @date 2020/11/18
*/
@Slf4j
@RestController
@RequestMapping("/sapProduct")
@Api(tags = "查询sap产品")
public class SapProductController {
@GetMapping("/init")
public Map<String,Object> init(String company, String cardType) {
company="SP";
cardType="S";
String url = MessageFormat.format(SapConstant.PARTNER_INIT,company,cardType);
log.info("url==========="+url+"----token====="+ SapUtil.getReadToken());
String res = HttpUtil.doGet(url, SapUtil.getReadToken());
Map<String,Object> result = JSONObject.parseObject(res, Map.class);
log.info("查询字段列表============result====="+result);
return result;
}
}

  

java中远程调用接口springboot的更多相关文章

  1. java如何调用接口方式二

    java如何调用接口 在实际开发过程中,我们经常需要调用对方提供的接口或测试自己写的接口是否合适,所以,问题来了,java如何调用接口?很多项目都会封装规定好本身项目的接口规范,所以大多数需要去调用对 ...

  2. java如何调用接口方式一

    java如何调用接口 其实对于java调用接口进行获取对方服务器的数据在开发中特别常见,然而一些常用的基础的知识总是掌握不牢,让人容易忘记,写下来闲的时候看看,比回想总会好一些. 总体而言,一些东西知 ...

  3. java如何调用接口 2

    在实际开发过程中,我们经常需要调用对方提供的接口或测试自己写的接口是否合适,所以,问题来了,java如何调用接口?很多项目都会封装规定好本身项目的接口规范,所以大多数需要去调用对方提供的接口或第三方接 ...

  4. java如何调用接口

    其实对于java调用接口进行获取对方服务器的数据在开发中特别常见,然而一些常用的基础的知识总是掌握不牢,让人容易忘记,写下来闲的时候看看,比回想总会好一些. 总体而言,一些东西知识点一直复制粘贴容易依 ...

  5. java如何调用对方http接口(II)

    java如何调用接口 在实际开发过程中,我们经常需要调用对方提供的接口或测试自己写的接口是否合适,所以,问题来了,java如何调用接口?很多项目都会封装规定好本身项目的接口规范,所以大多数需要去调用对 ...

  6. java远程调用linux的命令或者脚本

    转载自:http://eksliang.iteye.com/blog/2105862 Java通过SSH2协议执行远程Shell脚本(ganymed-ssh2-build210.jar) 使用步骤如下 ...

  7. 【转】java通用URL接口地址调用方式GET和POST方式

    java通用URL接口地址调用方式GET和POST方式,包括建立请求和设置请求头部信息等等......... import java.io.ByteArrayOutputStream; import ...

  8. C#动态webservice调用接口 (JAVA,C#)

    C#动态webservice调用接口 using System; using System.Collections; using System.IO; using System.Net; using ...

  9. 在网页程序或Java程序中调用接口实现短信猫收发短信的解决方案

    方案特点: 在网页程序或Java程序中调用接口实现短信猫收发短信的解决方案,简化软件开发流程,减少各应用系统相同模块的重复开发工作,提高系统稳定性和可靠性. 基于HTTP协议的开发接口 使用特点在网页 ...

随机推荐

  1. dubbo与zk

    一.总体流程: 1.服务提供者启动时,会向注册中心写入自己的元数据信息,同时会订阅配置元数据信息: 2.消费者启动时,也会向注册中心写入自己的元数据信息,并订阅服务提供者.路由和配置元数据信息: 3. ...

  2. 【不尽如人意的redisTemplete封装】

    线下项目里对spring redisTemplete进行了简单的封装,但是项目里关于其序列化的配置真的有点一言难尽: 可以看到这里用了JdkSerializationRedisSerializer去对 ...

  3. Prometheus+Grafana+Alertmanager实现告警推送教程 ----- 图文详解

    前言 本文主要介绍的是Prometheus采集数据,通过Grafana加上PromQL语句实现数据可视化以及通过Alertmanage实现告警推送功能.温馨提示,本篇文章特长,2w多的文字加上几十张图 ...

  4. NTML

     NTLM:         1.客户端向服务器发送一个请求,请求中包含明文的登陆用户名.在服务器中已经存储了登陆用户名和对应的密码hash         2.服务器接收到请求后,NTLMv2协议下 ...

  5. 从docker介绍及其简介

    一.引言 1.我本地代码运行没问题啊,但是别人机器运行不了,从而导致环境不一致的问题 2.那个兄弟又写死循环了,怎么这么卡,在多用户的操作系统下,会相互影响. 天猫双十一的情况下,用户量暴涨,从而导致 ...

  6. 第10.4节 Python模块的弱封装机制

    一. 引言 Python模块可以为调用者提供模块内成员的访问和调用,但某些情况下, 因为某些成员可能有特殊访问规则等原因,并不适合将模块内所有成员都提供给调用者访问,此时模块可以类似类的封装机制类似的 ...

  7. PyQt(Python+Qt)学习随笔:QTreeView树形视图的expandsOnDoubleClick属性

    老猿Python博文目录 专栏:使用PyQt开发图形界面Python应用 老猿Python博客地址 QTreeView树形视图的expandsOnDoubleClick属性用于控制鼠标双击是否展开或折 ...

  8. PyQt(Python+Qt)学习随笔:QAbstractItemView的showDropIndicator属性

    老猿Python博文目录 老猿Python博客地址 概述 QAbstractItemView的showDropIndicator属性用于控制在拖拽过程中显示当前拖拽到的位置,当释放时则在当前拖拽位置覆 ...

  9. 关于将Linux中默认的OpenJDK替换为JDK的方法

    首先下载需要的jdk安装包,后缀建议.tar.gz,本文中以jdk-8u212-linux-x64.tar.gz为例,地址就在oracle官网. 将安装包下载到linux环境后,使用命令tar -xz ...

  10. Python(三) PIL, Image生成验证图片

    Python(三) PIL, Image生成验证图片 安装好PIL,开始使用. 在PyCharm中新建一个文件:PIL_Test1.py 1 # PIL 应用练习 2 # 3 # import PIL ...