增加了新版本的认证服务接口
This commit is contained in:
@ -7,10 +7,9 @@ import lombok.Data;
|
||||
@Data
|
||||
public class AuthorityEntity {
|
||||
|
||||
private String roleId;
|
||||
private String roleName;
|
||||
private String roleCode;
|
||||
private String roleScope;
|
||||
private String roleId;
|
||||
private List<String> authorities;
|
||||
|
||||
}
|
||||
|
@ -11,6 +11,9 @@ import org.apache.commons.lang3.RegExUtils;
|
||||
import org.apache.commons.lang3.StringUtils;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.beans.factory.annotation.Value;
|
||||
import org.springframework.http.HttpEntity;
|
||||
import org.springframework.http.HttpHeaders;
|
||||
import org.springframework.http.HttpMethod;
|
||||
import org.springframework.http.ResponseEntity;
|
||||
import org.springframework.security.authentication.UsernamePasswordAuthenticationToken;
|
||||
import org.springframework.security.core.Authentication;
|
||||
@ -19,7 +22,7 @@ import org.springframework.web.client.RestTemplate;
|
||||
import org.springframework.web.filter.OncePerRequestFilter;
|
||||
|
||||
import com.chinaunicom.mall.ebtp.cloud.security.starter.common.Constants;
|
||||
import com.chinaunicom.mall.ebtp.cloud.security.starter.entity.SecurityEntity;
|
||||
import com.chinaunicom.mall.ebtp.cloud.security.starter.entity.SecurityUser;
|
||||
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
|
||||
@ -32,7 +35,7 @@ import lombok.extern.slf4j.Slf4j;
|
||||
public class TokenAuthenticationFilter extends OncePerRequestFilter {
|
||||
|
||||
private @Autowired RestTemplate restTemplate;
|
||||
private @Value("${user.auth.resource.token-info-uri}") String token_uri;
|
||||
private @Value("${user.auth.resource.userinfo}") String token_uri;
|
||||
|
||||
/**
|
||||
* @param request
|
||||
@ -71,20 +74,14 @@ public class TokenAuthenticationFilter extends OncePerRequestFilter {
|
||||
* @return
|
||||
*/
|
||||
private Authentication getAuthentication(String token) {
|
||||
ResponseEntity<SecurityEntity> entity = restTemplate.getForEntity(createRequestUri(token),
|
||||
SecurityEntity.class);
|
||||
HttpHeaders headers = new HttpHeaders();
|
||||
// 设置安全头
|
||||
headers.add(HttpHeaders.AUTHORIZATION, String.format("Bearer %s", token));
|
||||
|
||||
ResponseEntity<SecurityUser> entity = restTemplate.exchange(token_uri, HttpMethod.GET,
|
||||
new HttpEntity<String>(headers), SecurityUser.class);
|
||||
|
||||
return new UsernamePasswordAuthenticationToken(entity.getBody(), token);
|
||||
}
|
||||
|
||||
/**
|
||||
* 生成山分认证中心请求接口地址
|
||||
*
|
||||
* @param token
|
||||
* @return
|
||||
*/
|
||||
private String createRequestUri(String token) {
|
||||
return new StringBuilder(token_uri).append("?token=").append(token).toString();
|
||||
}
|
||||
|
||||
}
|
||||
|
@ -1,2 +1,2 @@
|
||||
user.auth.resource.token-info-uri=http://10.242.31.158:8100/mall-auth/oauth/check_token
|
||||
user.auth.resource.token-info-uri=http://10.242.31.158:8100/core-service-ebtp-userinfo/v1/userinfo/get
|
||||
user.auth.csrf.disable=true
|
@ -65,6 +65,12 @@
|
||||
<artifactId>poi-ooxml</artifactId>
|
||||
</dependency>
|
||||
|
||||
<dependency>
|
||||
<groupId>com.alibaba</groupId>
|
||||
<artifactId>fastjson</artifactId>
|
||||
<version>1.2.60</version>
|
||||
</dependency>
|
||||
|
||||
</dependencies>
|
||||
|
||||
<build>
|
||||
|
@ -1,9 +1,9 @@
|
||||
package com.chinaunicom.mall.ebtp.common.base.service;
|
||||
|
||||
import com.chinaunicom.mall.ebtp.common.base.entity.BaseCacheUser;
|
||||
|
||||
import java.util.Collection;
|
||||
|
||||
import com.chinaunicom.mall.ebtp.common.base.entity.BaseCacheUser;
|
||||
|
||||
/**
|
||||
* 缓存用户service
|
||||
* 获取缓存用户信息
|
||||
|
@ -1,18 +1,18 @@
|
||||
package com.chinaunicom.mall.ebtp.common.base.service.impl;
|
||||
|
||||
import com.chinaunicom.mall.ebtp.common.base.entity.BaseCacheUser;
|
||||
import com.chinaunicom.mall.ebtp.common.base.service.IBaseCacheUserService;
|
||||
import com.chinaunicom.mall.ebtp.common.util.JsonUtils;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
import org.springframework.stereotype.Service;
|
||||
import org.springframework.web.context.request.RequestContextHolder;
|
||||
import org.springframework.web.context.request.ServletRequestAttributes;
|
||||
|
||||
import javax.servlet.http.HttpServletRequest;
|
||||
import java.util.Collection;
|
||||
import java.util.Map;
|
||||
import java.util.concurrent.ConcurrentHashMap;
|
||||
|
||||
import org.springframework.beans.BeanUtils;
|
||||
import org.springframework.security.core.context.SecurityContextHolder;
|
||||
import org.springframework.stereotype.Service;
|
||||
|
||||
import com.chinaunicom.mall.ebtp.common.base.entity.BaseCacheUser;
|
||||
import com.chinaunicom.mall.ebtp.common.base.service.IBaseCacheUserService;
|
||||
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
|
||||
/**
|
||||
* 缓存用户service实现层 获取缓存用户信息
|
||||
*
|
||||
@ -23,25 +23,22 @@ import java.util.concurrent.ConcurrentHashMap;
|
||||
@Service
|
||||
@Slf4j
|
||||
public class BaseCacheUserServiceImpl implements IBaseCacheUserService {
|
||||
// TODO 设置种子ID, 对其雪花ID长度
|
||||
private static final long ID_SEED = 1345977833027100000L;
|
||||
|
||||
private static final Map<String, BaseCacheUser> USERS = new ConcurrentHashMap<>();
|
||||
|
||||
|
||||
@Override
|
||||
public BaseCacheUser getCacheUser() {
|
||||
BaseCacheUser user = null;
|
||||
ServletRequestAttributes attributes = (ServletRequestAttributes) RequestContextHolder.getRequestAttributes();
|
||||
if (attributes != null) {
|
||||
HttpServletRequest request = attributes.getRequest();
|
||||
String token = request.getHeader("JwtToken");
|
||||
if (token != null) {
|
||||
user = USERS.get(token);
|
||||
try {
|
||||
BaseCacheUser buser = new BaseCacheUser();
|
||||
BeanUtils.copyProperties(SecurityContextHolder.getContext().getAuthentication().getPrincipal(), buser);
|
||||
|
||||
log.debug("Current user principal: " + buser);
|
||||
|
||||
return buser;
|
||||
} catch (Exception e) {
|
||||
log.error(e.getMessage());
|
||||
}
|
||||
}
|
||||
log.info(" --------------- 当前用户信息:" + JsonUtils.objectToJson(user) + " ------------------------------");
|
||||
return user;
|
||||
return new BaseCacheUser();
|
||||
}
|
||||
|
||||
@Override
|
||||
@ -49,54 +46,4 @@ public class BaseCacheUserServiceImpl implements IBaseCacheUserService {
|
||||
return USERS.values();
|
||||
}
|
||||
|
||||
/**
|
||||
* @param string
|
||||
* @return
|
||||
*/
|
||||
// TODO: 山东框架使用未使用雪花ID存放字符串,暂时使用该方法进行id转换
|
||||
private Long getUserId(String rawUid) {
|
||||
long id = ID_SEED;
|
||||
byte[] bytes = rawUid.getBytes();
|
||||
|
||||
for (byte b : bytes) {
|
||||
id += b;
|
||||
}
|
||||
return id;
|
||||
}
|
||||
|
||||
static {
|
||||
BaseCacheUser user = new BaseCacheUser().setUserId("1").setFullName("采购经理").setLoginName("caigou")
|
||||
.setRoleIds("caigou").setOrganizationId("100").setOrganizationName("中国联通吉林分公司");
|
||||
USERS.put(String.valueOf(user.getUserId()), user);
|
||||
|
||||
BaseCacheUser user0 = new BaseCacheUser().setUserId("2").setFullName("代理机构管理员").setLoginName("daili-admin")
|
||||
.setRoleIds("daili-admin").setOrganizationId("100100").setOrganizationName("中兴代理公司");
|
||||
USERS.put(String.valueOf(user0.getUserId()), user0);
|
||||
|
||||
BaseCacheUser user1 = new BaseCacheUser().setUserId("3").setFullName("代理机构子管理员").setLoginName("daili-subadmin")
|
||||
.setRoleIds("daili-subadmin").setOrganizationId("100100").setOrganizationName("中兴代理公司");
|
||||
USERS.put(String.valueOf(user1.getUserId()), user1);
|
||||
|
||||
BaseCacheUser user2 = new BaseCacheUser().setUserId("4").setFullName("项目经理1").setLoginName("daili1")
|
||||
.setRoleIds("daili").setOrganizationId("100100").setOrganizationName("中兴代理公司");
|
||||
USERS.put(String.valueOf(user2.getUserId()), user2);
|
||||
|
||||
BaseCacheUser user3 = new BaseCacheUser().setUserId("5").setFullName("项目经理2").setLoginName("daili2")
|
||||
.setRoleIds("daili").setOrganizationId("100100").setOrganizationName("中兴代理公司");
|
||||
USERS.put(String.valueOf(user3.getUserId()), user3);
|
||||
|
||||
for (int i = 0; i < 5; i++) {
|
||||
BaseCacheUser user4 = new BaseCacheUser().setUserId(String.valueOf(6 + i)).setFullName("专家" + (i + 1))
|
||||
.setLoginName("1300000000" + (i + 1)).setRoleIds("zhuanjia").setOrganizationId("666")
|
||||
.setOrganizationName("专家公司");
|
||||
USERS.put(String.valueOf(user4.getUserId()), user4);
|
||||
}
|
||||
|
||||
for (int i = 0; i < 5; i++) {
|
||||
BaseCacheUser user4 = new BaseCacheUser().setUserId(String.valueOf(11 + i)).setFullName("供应商" + (i + 1))
|
||||
.setLoginName("gys" + (i + 1)).setRoleIds("gys").setOrganizationId("200" + (i + 1))
|
||||
.setOrganizationName("供应商公司" + (i + 1));
|
||||
USERS.put(String.valueOf(user4.getUserId()), user4);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -1,7 +1,10 @@
|
||||
package com.chinaunicom.mall.ebtp.common.config;
|
||||
|
||||
import javax.servlet.http.HttpServletRequest;
|
||||
import static com.chinaunicom.mall.ebtp.cloud.security.starter.common.Constants.AUTHORIZATION_HEADER;
|
||||
import static com.chinaunicom.mall.ebtp.cloud.security.starter.common.Constants.TOKEN_PREFIX;
|
||||
|
||||
import org.apache.commons.lang3.RegExUtils;
|
||||
import org.apache.commons.lang3.StringUtils;
|
||||
import org.springframework.context.annotation.Configuration;
|
||||
import org.springframework.web.context.request.RequestContextHolder;
|
||||
import org.springframework.web.context.request.ServletRequestAttributes;
|
||||
@ -15,14 +18,22 @@ import feign.RequestTemplate;
|
||||
@Configuration
|
||||
public class FeignConfig implements RequestInterceptor {
|
||||
|
||||
/**
|
||||
* @param template
|
||||
*/
|
||||
@Override
|
||||
public void apply(RequestTemplate template) {
|
||||
ServletRequestAttributes attributes = (ServletRequestAttributes) RequestContextHolder.getRequestAttributes();
|
||||
|
||||
if (null != attributes) {
|
||||
HttpServletRequest request = attributes.getRequest();
|
||||
String token = request.getHeader("JwtToken");
|
||||
template.header("JwtToken", token);
|
||||
final String header = attributes.getRequest().getHeader(AUTHORIZATION_HEADER);// 提取request头信息
|
||||
|
||||
// 检查请求头是否包含 Bearer 前缀
|
||||
if (StringUtils.startsWith(header, TOKEN_PREFIX)) {
|
||||
String authToken = RegExUtils.replaceAll(header, TOKEN_PREFIX, "");// 提取 token 信息
|
||||
|
||||
template.header(AUTHORIZATION_HEADER, String.format("%s%s", TOKEN_PREFIX, authToken));
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -1,8 +1,10 @@
|
||||
package com.chinaunicom.mall.ebtp.common.config;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
import com.fasterxml.jackson.databind.ObjectMapper;
|
||||
import com.fasterxml.jackson.databind.module.SimpleModule;
|
||||
import com.fasterxml.jackson.databind.ser.std.ToStringSerializer;
|
||||
import org.springframework.context.annotation.Bean;
|
||||
import org.springframework.context.annotation.Configuration;
|
||||
import org.springframework.http.converter.ByteArrayHttpMessageConverter;
|
||||
import org.springframework.http.converter.HttpMessageConverter;
|
||||
import org.springframework.http.converter.ResourceHttpMessageConverter;
|
||||
@ -11,9 +13,7 @@ import org.springframework.http.converter.json.MappingJackson2HttpMessageConvert
|
||||
import org.springframework.http.converter.support.AllEncompassingFormHttpMessageConverter;
|
||||
import org.springframework.web.servlet.config.annotation.WebMvcConfigurationSupport;
|
||||
|
||||
import com.fasterxml.jackson.databind.ObjectMapper;
|
||||
import com.fasterxml.jackson.databind.module.SimpleModule;
|
||||
import com.fasterxml.jackson.databind.ser.std.ToStringSerializer;
|
||||
import java.util.List;
|
||||
|
||||
/**
|
||||
* @author dino
|
||||
|
@ -0,0 +1,47 @@
|
||||
package com.chinaunicom.mall.ebtp.common.uniBss.constant;
|
||||
|
||||
import java.util.HashMap;
|
||||
import java.util.Map;
|
||||
|
||||
public class UniBssConstant {
|
||||
public static String RESP_CODE_00000 = "00000";// 成功
|
||||
public static String RESP_CODE_A00001 = "A00001";//app_id校验失败
|
||||
public static String RESP_CODE_A00002 = "A00002";//应用未订购服务、Token解析失败
|
||||
public static String RESP_CODE_A00003 = "A00003";//请求IP不在源IP允许范围内
|
||||
public static String RESP_CODE_A00004 = "A00004";//所有能力日总调用次数超过阀值
|
||||
public static String RESP_CODE_A00005 = "A00005";//此能力日总调用次数超过阀值
|
||||
public static String RESP_CODE_A00006 = "A00006";//所有能力并发请求数超过阀值
|
||||
public static String RESP_CODE_A00007 = "A00007";//此能力并发请求数超过阀值
|
||||
public static String RESP_CODE_A00008 = "A00008";//所有能力时间段内调用次数超过阀值
|
||||
public static String RESP_CODE_A88888 = "A88888";//下游返回错误的集合体
|
||||
public static String RESP_CODE_A99997 = "A99997";//请求报文校验出错
|
||||
public static String RESP_CODE_A99999 = "A99999";//服务没有签到
|
||||
public static String RESP_CODE_C10000 = "C10000";//请求url格式校验错误
|
||||
public static String RESP_CODE_C10001 = "C10001";//请求服务标识错误
|
||||
public static String RESP_CODE_C10002 = "C10002";//请求能力标识错误
|
||||
public static String RESP_CODE_N20000 = "N20000";//能力调用超时
|
||||
|
||||
private static Map<String,String> RESP_CODE_Map = new HashMap();
|
||||
static {
|
||||
RESP_CODE_Map.put(RESP_CODE_00000 , "成功");
|
||||
RESP_CODE_Map.put(RESP_CODE_A00001, "app_id校验失败");
|
||||
RESP_CODE_Map.put(RESP_CODE_A00002, "应用未订购服务、Token解析失败");
|
||||
RESP_CODE_Map.put(RESP_CODE_A00003, "请求IP不在源IP允许范围内");
|
||||
RESP_CODE_Map.put(RESP_CODE_A00004, "所有能力日总调用次数超过阀值");
|
||||
RESP_CODE_Map.put(RESP_CODE_A00005, "此能力日总调用次数超过阀值");
|
||||
RESP_CODE_Map.put(RESP_CODE_A00006, "所有能力并发请求数超过阀值");
|
||||
RESP_CODE_Map.put(RESP_CODE_A00007, "此能力并发请求数超过阀值");
|
||||
RESP_CODE_Map.put(RESP_CODE_A00008, "所有能力时间段内调用次数超过阀值");
|
||||
RESP_CODE_Map.put(RESP_CODE_A88888, "下游返回错误的集合体");
|
||||
RESP_CODE_Map.put(RESP_CODE_A99997, "请求报文校验出错");
|
||||
RESP_CODE_Map.put(RESP_CODE_A99999, "服务没有签到");
|
||||
RESP_CODE_Map.put(RESP_CODE_C10000, "请求url格式校验错误");
|
||||
RESP_CODE_Map.put(RESP_CODE_C10001, "请求服务标识错误");
|
||||
RESP_CODE_Map.put(RESP_CODE_C10002, "请求能力标识错误");
|
||||
RESP_CODE_Map.put(RESP_CODE_N20000, "能力调用超时");
|
||||
}
|
||||
|
||||
public static String getRESP_CODE_Map(String state) {
|
||||
return RESP_CODE_Map.get(state);
|
||||
}
|
||||
}
|
@ -0,0 +1,21 @@
|
||||
package com.chinaunicom.mall.ebtp.common.uniBss.entity;
|
||||
|
||||
import com.alibaba.fastjson.annotation.JSONField;
|
||||
import lombok.Data;
|
||||
import lombok.experimental.Accessors;
|
||||
|
||||
/**
|
||||
* 实体类 总
|
||||
*
|
||||
* @auto.generated
|
||||
*/
|
||||
@Data
|
||||
@Accessors(chain = true)
|
||||
public class UniBss{
|
||||
@JSONField(name = "UNI_BSS_ATTACHED")
|
||||
private UniBssAttached uniBssAttached;
|
||||
@JSONField(name = "UNI_BSS_BODY")
|
||||
private UniBssBody uniBssBody;
|
||||
@JSONField(name = "UNI_BSS_HEAD")
|
||||
private UniBssHead uniBssHead;
|
||||
}
|
@ -0,0 +1,20 @@
|
||||
package com.chinaunicom.mall.ebtp.common.uniBss.entity;
|
||||
|
||||
import com.alibaba.fastjson.annotation.JSONField;
|
||||
import lombok.Data;
|
||||
import lombok.experimental.Accessors;
|
||||
|
||||
import java.io.Serializable;
|
||||
|
||||
/**
|
||||
* 实体类 暂时没用
|
||||
*
|
||||
* @auto.generated
|
||||
*/
|
||||
@Data
|
||||
@Accessors(chain = true)
|
||||
public class UniBssAttached implements Serializable {
|
||||
@JSONField(name = "MEDIA_INFO")
|
||||
private String mediaInf;
|
||||
|
||||
}
|
@ -0,0 +1,25 @@
|
||||
package com.chinaunicom.mall.ebtp.common.uniBss.entity;
|
||||
|
||||
import com.alibaba.fastjson.annotation.JSONField;
|
||||
import lombok.Data;
|
||||
import lombok.experimental.Accessors;
|
||||
|
||||
import java.io.Serializable;
|
||||
import java.util.HashMap;
|
||||
import java.util.Map;
|
||||
|
||||
/**
|
||||
* 实体类 业务参数实体类
|
||||
*
|
||||
* @auto.generated
|
||||
*/
|
||||
@Data
|
||||
@Accessors(chain = true)
|
||||
public class UniBssBody implements Serializable {
|
||||
@JSONField(name = "SINGLE_ORDER_QRY_REQ")
|
||||
private Map<String, String> singleOrderQryReq = new HashMap<>();
|
||||
|
||||
@JSONField(name = "SINGLE_ORDER_QRY_RSP")
|
||||
private String singleOrderQryRsp;
|
||||
|
||||
}
|
@ -0,0 +1,29 @@
|
||||
package com.chinaunicom.mall.ebtp.common.uniBss.entity;
|
||||
|
||||
import com.alibaba.fastjson.annotation.JSONField;
|
||||
import lombok.Data;
|
||||
import lombok.experimental.Accessors;
|
||||
|
||||
import java.io.Serializable;
|
||||
|
||||
/**
|
||||
* 实体类 天擎权限
|
||||
*
|
||||
* @auto.generated
|
||||
*/
|
||||
@Data
|
||||
@Accessors(chain = true)
|
||||
public class UniBssHead implements Serializable {
|
||||
@JSONField(name = "APP_ID")
|
||||
private String appId;
|
||||
@JSONField(name = "TIMESTAMP")
|
||||
private String timeStamp;
|
||||
@JSONField(name = "TRANS_ID")
|
||||
private String transId;
|
||||
@JSONField(name = "TOKEN")
|
||||
private String token;
|
||||
@JSONField(name = "RESP_DESC")
|
||||
private String respDesc;
|
||||
@JSONField(name = "RESP_CODE")
|
||||
private String respCode;
|
||||
}
|
@ -0,0 +1,207 @@
|
||||
package com.chinaunicom.mall.ebtp.common.uniBss.service;
|
||||
|
||||
import cn.hutool.core.exceptions.ExceptionUtil;
|
||||
import com.alibaba.fastjson.JSON;
|
||||
import com.alibaba.fastjson.JSONArray;
|
||||
import com.chinaunicom.mall.ebtp.common.uniBss.entity.UniBss;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
import org.springframework.stereotype.Service;
|
||||
|
||||
import java.io.BufferedReader;
|
||||
import java.io.InputStream;
|
||||
import java.io.InputStreamReader;
|
||||
import java.io.PrintWriter;
|
||||
import java.net.HttpURLConnection;
|
||||
import java.net.URL;
|
||||
import java.security.MessageDigest;
|
||||
import java.util.HashMap;
|
||||
import java.util.Map;
|
||||
|
||||
@Slf4j
|
||||
public class UniBssServiceImpl {
|
||||
/**
|
||||
* 天擎token 32位MD5小写加密
|
||||
* @param str 未加密字符串
|
||||
* @return
|
||||
*/
|
||||
public static String MD5min(String str) {
|
||||
String result = "";
|
||||
try {
|
||||
MessageDigest md5 = MessageDigest.getInstance("MD5");
|
||||
md5.update((str).getBytes("UTF-8"));
|
||||
byte b[] = md5.digest();
|
||||
|
||||
int i;
|
||||
StringBuffer buf = new StringBuffer("");
|
||||
|
||||
for(int offset=0; offset<b.length; offset++){
|
||||
i = b[offset];
|
||||
if(i<0){
|
||||
i+=256;
|
||||
}
|
||||
if(i<16){
|
||||
buf.append("0");
|
||||
}
|
||||
buf.append(Integer.toHexString(i));
|
||||
}
|
||||
result = buf.toString();
|
||||
return result;
|
||||
} catch (Exception e) {
|
||||
return null;
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
/**
|
||||
* 天擎http+post调用
|
||||
* @param path 接口地址
|
||||
* @param data 接口参数 json字符串
|
||||
* @return
|
||||
*/
|
||||
public static String uniBssHttpPost(String path,String data) {
|
||||
String str = "";
|
||||
try {
|
||||
URL url = new URL(path);
|
||||
//打开和url之间的连接
|
||||
HttpURLConnection conn = (HttpURLConnection) url.openConnection();
|
||||
PrintWriter out = null;
|
||||
|
||||
/**设置URLConnection的参数和普通的请求属性****start***/
|
||||
|
||||
conn.setRequestProperty("Content-Type", "application/json; charset=UTF-8");
|
||||
conn.setRequestProperty("Accept", "application/json");
|
||||
conn.setRequestProperty("Accept-Encoding", "");
|
||||
|
||||
/**设置URLConnection的参数和普通的请求属性****end***/
|
||||
conn.setDoOutput(true);
|
||||
conn.setDoInput(true);
|
||||
|
||||
conn.setRequestMethod("POST");//GET和POST必须全大写
|
||||
/**GET方法请求*****start*/
|
||||
/**
|
||||
* 如果只是发送GET方式请求,使用connet方法建立和远程资源之间的实际连接即可;
|
||||
* 如果发送POST方式的请求,需要获取URLConnection实例对应的输出流来发送请求参数。
|
||||
* */
|
||||
// conn.connect();
|
||||
|
||||
/**GET方法请求*****end*/
|
||||
|
||||
/***POST方法请求****start*/
|
||||
out = new PrintWriter(conn.getOutputStream());//获取URLConnection对象对应的输出流
|
||||
|
||||
out.print(data);//发送请求参数即数据
|
||||
|
||||
out.flush();//缓冲数据
|
||||
|
||||
/***POST方法请求****end*/
|
||||
|
||||
//获取URLConnection对象对应的输入流
|
||||
InputStream is = conn.getInputStream();
|
||||
//构造一个字符流缓存
|
||||
BufferedReader br = new BufferedReader(new InputStreamReader(is));
|
||||
|
||||
String line = br.readLine();
|
||||
while (line != null) {
|
||||
str=new String(line.getBytes(),"UTF-8");//解决中文乱码问题
|
||||
System.out.println(str);
|
||||
line = br.readLine();
|
||||
}
|
||||
//关闭流
|
||||
is.close();
|
||||
//断开连接,最好写上,disconnect是在底层tcp socket链接空闲时才切断。如果正在被其他线程使用就不切断。
|
||||
//固定多线程的话,如果不disconnect,链接会增多,直到收发不出信息。写上disconnect后正常一些。
|
||||
conn.disconnect();
|
||||
//System.out.println("完整结束");
|
||||
} catch (Exception e) {
|
||||
e.printStackTrace();
|
||||
}
|
||||
return str;
|
||||
}
|
||||
|
||||
/**
|
||||
* 天擎http+post调用
|
||||
* @param rsp 接口参数 json字符串
|
||||
* @return
|
||||
*/
|
||||
public static Map<String,String> uniBssRspToMap(String rsp) {
|
||||
Map<String,String> map = new HashMap();
|
||||
try{
|
||||
String qs[] = rsp.split("\n");
|
||||
for(String q : qs){
|
||||
if(q.indexOf("signMsg=")>=0){
|
||||
String qs2 = q.substring("signMsg=".length(),q.length());
|
||||
map.put("signMsg", qs2);
|
||||
}else {
|
||||
String qs2[] = q.split("=");
|
||||
map.put(qs2[0], qs2.length > 1 && qs2[1] != null && !"".equals(qs2[1]) ? qs2[1] : "");
|
||||
}
|
||||
}
|
||||
}catch (Exception e){
|
||||
log.info(ExceptionUtil.stacktraceToString(e));
|
||||
}
|
||||
return map;
|
||||
}
|
||||
|
||||
|
||||
public static void main(String arge[]){
|
||||
/* String rsp = "signMsg=xxxdfsdfs==";
|
||||
Map map = uniBssRspToMap(rsp);
|
||||
System.out.println(map);*/
|
||||
/* SignMsgGenFacadeImpl sing = new SignMsgGenFacadeImpl();
|
||||
sing.app_id = "2ICalrrQ0F";
|
||||
sing.app_secret = "1mb6n6635cJkDb3pEQPUFXc2nRJ8RPaS";
|
||||
Date date = new Date();
|
||||
SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss SSS");
|
||||
SimpleDateFormat format2 = new SimpleDateFormat("yyyyMMddHHmmssSSS");
|
||||
String TIMESTAMP = format.format(date);
|
||||
String TRANS_ID = format2.format(date)+(int)((Math.random()*9+1)*100000);
|
||||
String s = "APP_ID+"+sing.app_id+"+TIMESTAMP"+TIMESTAMP+"TRANS_ID"+TRANS_ID+sing.app_secret;
|
||||
String token = MD5min(s);
|
||||
uniBss uniBss = new uniBss();
|
||||
uniBss.setUniBssAttached(new uniBssAttached().setMediaInf(""));
|
||||
|
||||
uniBssHead head = new uniBssHead();
|
||||
head.setAppId(sing.app_id);
|
||||
head.setTimeStamp(TIMESTAMP);
|
||||
head.setTransId(TRANS_ID);
|
||||
head.setToken(token);
|
||||
uniBss.setUniBssHead(head);
|
||||
|
||||
uniBssBody body = new uniBssBody();
|
||||
try {
|
||||
//List<BizBidPayConfigure> configList = this.ibizBidPayConfigureService.getlist(new BizBidPayConfigure());
|
||||
//Map<String, String> configMap = Utils.getConfigListToMap(configList);
|
||||
body.getSingleOrderQryReq().put("merNo", "301104010018985");//商户号
|
||||
body.getSingleOrderQryReq().put("orderDate", "20210201");
|
||||
body.getSingleOrderQryReq().put("orderNo", "0000000011101202102011547080010");//订单号
|
||||
body.getSingleOrderQryReq().put("charSet", "UTF-8");
|
||||
body.getSingleOrderQryReq().put("signType", "RSA_SHA256");
|
||||
String signMsg = null;
|
||||
//signMsg = this.getSignMsg(body.getSINGLE_ORDER_QRY_REQ().get("merNo"),body.getSINGLE_ORDER_QRY_REQ().get("signType"),body.getSINGLE_ORDER_QRY_REQ().get("charSet"),body.getSINGLE_ORDER_QRY_REQ());
|
||||
body.getSingleOrderQryReq().put("signMsg", signMsg);
|
||||
uniBss.setUniBssBody(body);
|
||||
|
||||
String json = JSON.toJSONString(uniBss);
|
||||
System.out.println(json);
|
||||
}catch (Exception e){
|
||||
|
||||
}*/
|
||||
|
||||
//String a ="[{\"APP_ID\":\"1\"}]";
|
||||
//List<UniBssHead> head = JSONArray.parseArray(a,UniBssHead.class);
|
||||
|
||||
/* String s = "{\"UNI_BSS_ATTACHED\":{\"MEDIA_INFO\":\"\"},\"UNI_BSS_BODY\":{\"SINGLE_ORDER_QRY_REQ\":{\"charSet\":\"UTF-8\",\"orderNo\":\"0000000011101202102011547080010\",\"merNo\":\"301104010018985\",\"signType\":\"RSA_SHA256\",\"signMsg\":\"RL3m4USZyNsr9NWh2t5Qa8foJv43PgEfv3FFe%2Bf2E4JX8a52%2Bjr3ygadp%2FYwz%2B0YEOK7YfjqyHpEh%2Fp6QpeXCEbDndKW5xKPv6auRpzYjU6saweAZScXeyEXL%2BnLc1bkaOUHMr27XWEq5LB%2Be%2FeFTJHNILUVUhuEtQVC2fF6xODNggZAEbFJB3y4Ouslcq5tTTOveO%2FBo%2Beh8gxLU5zJoN3zwnvRcu%2Fj7Enmc1jdwT5xUiIGkcU745uIyKtriodDYZS6nfg306H0uEubGADIOFdTnzF99am2hhm1yDzLMcR6incV4oANRlm4GNA79sRhXEC0f%2FQz6Jn%2FkncoDQQu7Q%3D%3D\",\"orderDate\":\"20210201\"}},\"UNI_BSS_HEAD\":{\"APP_ID\":\"2ICalrrQ0F\",\"TIMESTAMP\":\"2021-02-01 19:20:51 155\",\"TRANS_ID\":\"20210201192051155595697\",\"TOKEN\":\"e95a390345d88db8395fe0b94229c9bb\"}}";
|
||||
String str = uniBssHttpPost("http://10.124.150.230:8000/api/epay/upay/singleOrderQry/v1",s);
|
||||
|
||||
UniBss uniBss = JSONArray.parseObject(str,UniBss.class);
|
||||
System.out.println(uniBss.getUniBssHead().getRespDesc());
|
||||
String rsp = String.valueOf(uniBss.getUniBssBody().getSingleOrderQryRsp());
|
||||
String qs[] = rsp.split("\n");
|
||||
Map<String,String> map = new HashMap();
|
||||
for(String q : qs){
|
||||
String qs2[] = q.split("=");
|
||||
map.put(qs2[0], qs2.length>1&&qs2[1]!=null&&!"".equals(qs2[1])?qs2[1]:"");
|
||||
}
|
||||
System.out.println(map);*/
|
||||
}
|
||||
}
|
Reference in New Issue
Block a user