Commit 8218da17 authored by 李志平's avatar 李志平

demo

parent 01c79af6
MIIEvAIBADANBgkqhkiG9w0BAQEFAASCBKYwggSiAgEAAoIBAQDEGvSRtg1e80qIznrkXRxS+vtH6iE2DuELz9AoA4FBZepMOxlXbwZaOYqoAkryEWV+ROj7fecLtc2JbILf3CL8Pids7whwZcM0Zpds9PNlis9q8jcuAQfICsiTO03DKG7/G8c8O3bjn6lW/7BdTjtp2jISE/HoSE2g7vLqWzv3T/1YUwd9rqu32Qdu15tEqJHcCu2DYZjBseccRHxMX8KQNdoSMKjRrdoF1DU2r3edyOj09UG2btwjZoxgH1qPQMCmRZnuCUxbTMmaZNyzDi9CE7K+0IMItacTo9G4+egNWi84NrvRSqSReK2uTOx0Z50Xs7EgPt1tM0RGuLBGkIgBAgMBAAECggEAdwh1k0yR6SR8BXZvmdX6r1Ow2wH+jrWRXH4Tt3YJKw0Vnpfw1eWKUZHD3B8oJq7wkCh70sulRrJfxB6dggw5ICsJ+1FMKg1a45+yImy8oNIU/LFxVPdDJeWFwfipRuBwH2FZGfJuQ9RSEYC6KKin36SV5+s7VucsV5cy05X1XDObPmJXicyIVeGCV2e3Pt3MyK3AQuVKxL5MtJEqHn91TjJRX4NTEPNqIF2T2GfsOAj1wQ3eHyC77vUyNTGtePNFOoy+1yd7gH30pzTfyqG8JrTPRPqaWNi4STHkrlMsGehmvTbDzw/UeQphbjm3omEp07xvDOldTKvLBqqHPxjU0QKBgQD+U/+Jgnp5IY34feDevdi7+kud3DGO4JSgdEPUYvec260YjXnodM/QILeXuxfH5Q8F9eh11KqLI8HjYdZ7u7vLz7iyx8iJiWVEzlPBpXHYKd+IOvBfbdft1cWSgRVDwcDiMXucQQNIFUjkMNmhBdW9QjhBkuJl1auhmGM5b+4xYwKBgQDFZPm+nhIGWPcCu98WrsgkGDM+wy862jwHIiJixaRBULX1/mPLosP35yxKWbfVaFPcfxdN5W31njQ9OUJkYeQpFO9uyE6Xx7ohA+qNHgYlW+Xfi02E9pBJH/FCBdOjAFPEyp1cBNAuRft22w1fLNIZJ5VQWEDvZ+aftHNJURywSwKBgAUsRjVQzxbppM6aGNnO+LqSE7mpQeTLEprU4pBOVwT8vt+R+RnOTm/ISpOufYRWV2DiqJDE+5cK6iWq1sb7gY1as0IHqD+L6OBmZfO5XsBr0Z0evcbjIBI5V+Rr9bfEGB1Brmb2N4/exvXFPJf222sXDrfeufYiS3Rk+hev/CNLAoGALKGSHllbNfgzkXitDlHiita174DuUt45KFu9bpvFcccv/TjRk59vs8OfLghvGl+GZpqNyF0RqbFlmlox+sRvdCJ5qJC9xG+yU/iwtcuOFDBdH1g95Mxi/0WrpQPwQDC4wAwX3FBySaQlIVCSC2z07B8ZEZuCwx649G82ieM/G1UCgYAugR4Z/1uafgXScjYShSMbP3HohmWKbCo1Ws9wtv2MNlmGtE2AhJq5ZLNccsM9sztPzgXQjSeVlyfPethqQeVdV+iCNaj4/VaL2QAyiCfEbc3dRkm5840Ob4rQtizicSIUvKuBaU9fgmtDvzgvgE0eaMh1OppSdAZ0qEut2xXErA==
\ No newline at end of file
MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAxBr0kbYNXvNKiM565F0cUvr7R+ohNg7hC8/QKAOBQWXqTDsZV28GWjmKqAJK8hFlfkTo+33nC7XNiWyC39wi/D4nbO8IcGXDNGaXbPTzZYrPavI3LgEHyArIkztNwyhu/xvHPDt245+pVv+wXU47adoyEhPx6EhNoO7y6ls790/9WFMHfa6rt9kHbtebRKiR3Artg2GYwbHnHER8TF/CkDXaEjCo0a3aBdQ1Nq93ncjo9PVBtm7cI2aMYB9aj0DApkWZ7glMW0zJmmTcsw4vQhOyvtCDCLWnE6PRuPnoDVovODa70UqkkXitrkzsdGedF7OxID7dbTNERriwRpCIAQIDAQAB
\ No newline at end of file
......@@ -123,6 +123,28 @@
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-actuator</artifactId>
</dependency>
<dependency>
<groupId>commons-httpclient</groupId>
<artifactId>commons-httpclient</artifactId>
<version>3.1</version>
</dependency>
<dependency>
<groupId>commons-io</groupId>
<artifactId>commons-io</artifactId>
<version>2.8.0</version>
</dependency>
<dependency>
<groupId>rsa</groupId>
<artifactId>RSA</artifactId>
<version>0.0.1</version>
<systemPath>${project.basedir}/lib/RSA-0.0.1-SNAPSHOT.jar</systemPath>
<scope>system</scope>
</dependency>
<dependency>
<groupId>org.apache.httpcomponents</groupId>
<artifactId>httpmime</artifactId>
</dependency>
</dependencies>
<dependencyManagement>
<dependencies>
......
package com.dianmi.controller;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
@Controller
@RequestMapping("/open/oa")
public class OpenOAController {
}
package com.dianmi.dto;
import java.io.Serializable;
import lombok.Data;
@Data
public class QueryWorkflowDetailDto implements Serializable{
/**
*
*/
private static final long serialVersionUID = -5655371382778469618L;
private Integer requestid; //流程请求ID
private Integer userid; //当前用户
private Integer fromrequestid; //流程信息
}
package com.dianmi.dto;
import java.io.Serializable;
import lombok.Data;
@Data
public class QueryWorkflowTypeDto implements Serializable {
/**
*
*/
private static final long serialVersionUID = 6383851310085491249L;
private Integer pageNo;
private Integer pageSize;
private Integer recordCount;
private Integer userid;
private String conditions;
}
package com.dianmi.service;
import java.util.List;
import java.util.Map;
import com.dianmi.dto.QueryWorkflowDetailDto;
import com.dianmi.dto.QueryWorkflowTypeDto;
import com.dianmi.ws.WorkflowBaseInfo;
import com.dianmi.ws.WorkflowRequestInfo;
public interface IOpenOAService {
/**
* 查询可创建流程类型
* @param dto
* @return
*/
public List<WorkflowBaseInfo> getCreateWorkflowTypeList(QueryWorkflowTypeDto dto);
/**
* 查询流程详情
* @param dto
* @return
*/
public WorkflowRequestInfo getWorkflowRequest(QueryWorkflowDetailDto dto);
public void redirectOA(Map<String, String> paraMap);
}
package com.dianmi.service.impl;
import java.net.MalformedURLException;
import java.net.URL;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import org.apache.commons.lang3.ArrayUtils;
import org.apache.commons.lang3.StringUtils;
import org.springframework.beans.factory.InitializingBean;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.stereotype.Service;
import org.springframework.web.client.RestTemplate;
import com.dianmi.dto.QueryWorkflowDetailDto;
import com.dianmi.dto.QueryWorkflowTypeDto;
import com.dianmi.service.IOpenOAService;
import com.dianmi.ws.ArrayOfString;
import com.dianmi.ws.ArrayOfWorkflowBaseInfo;
import com.dianmi.ws.WorkflowBaseInfo;
import com.dianmi.ws.WorkflowRequestInfo;
import com.dianmi.ws.WorkflowService;
import com.dianmi.ws.WorkflowServicePortType;
import lombok.extern.slf4j.Slf4j;
@Slf4j
@Service
public class OpenOAServiceImpl implements IOpenOAService,InitializingBean {
@Value("${oa.baseUrl}")
private String baseUrl;
@Value("${oa.appId}")
private String appId;
private String oaWsdlUrl;
private WorkflowServicePortType workflowServicePortType;
private RestTemplate restTemplate;
@Override
public List<WorkflowBaseInfo> getCreateWorkflowTypeList(QueryWorkflowTypeDto dto) {
String conditions = dto.getConditions();
String[] str = null;
if (StringUtils.isNotEmpty(conditions)) {
str = conditions.split(",");
}
ArrayOfString aos = new ArrayOfString();
if (ArrayUtils.isNotEmpty(str)) {
aos.getString().addAll(new ArrayList<String>(Arrays.asList(str)));
}
ArrayOfWorkflowBaseInfo bas = workflowServicePortType.getCreateWorkflowTypeList(dto.getPageNo(),
dto.getPageSize(),
dto.getRecordCount(), dto.getUserid(), aos);
return bas.getWorkflowBaseInfo();
}
@Override
public WorkflowRequestInfo getWorkflowRequest(QueryWorkflowDetailDto dto) {
return workflowServicePortType.getWorkflowRequest(dto.getRequestid(), dto.getUserid(), dto.getFromrequestid());
}
@Override
public void afterPropertiesSet() {
try {
oaWsdlUrl = baseUrl+"/services/WorkflowService?wsdl";
WorkflowService workflowService = new WorkflowService(new URL(oaWsdlUrl));
workflowServicePortType = workflowService.getWorkflowServiceHttpPort();
restTemplate = new RestTemplate();
} catch (MalformedURLException e) {
log.error("请求oa流程接口异常:{}",e.getMessage(),e);
}
}
@Override
public void redirectOA(Map<String, String> paraMap) {
}
}
......@@ -39,13 +39,13 @@ import javax.xml.bind.annotation.XmlType;
public class WorkflowBaseInfo {
@XmlElement(nillable = true)
protected String workflowId; //工作流ID
protected String workflowId;
@XmlElement(nillable = true)
protected String workflowName; //工作流标题
protected String workflowName;
@XmlElement(nillable = true)
protected String workflowTypeId; //工作流类型ID
protected String workflowTypeId;
@XmlElement(nillable = true)
protected String workflowTypeName; //工作流类型名称
protected String workflowTypeName;
/**
* 获取workflowId属性的值。
......
......@@ -105,7 +105,7 @@ public class WorkflowRequestInfo {
@XmlElement(nillable = true)
protected String currentNodeId;
@XmlElement(nillable = true)
protected String currentNodeName;//当前节点名称
protected String currentNodeName;
@XmlElement(nillable = true)
protected String forwardButtonName;
@XmlElement(nillable = true)
......@@ -115,7 +115,7 @@ public class WorkflowRequestInfo {
@XmlElement(nillable = true)
protected String lastOperatorName;
@XmlElement(nillable = true)
protected String messageType;//短信提醒
protected String messageType;
protected Boolean mustInputRemark;
protected Boolean needAffirmance;
@XmlElement(nillable = true)
......@@ -125,11 +125,11 @@ public class WorkflowRequestInfo {
@XmlElement(nillable = true)
protected String remark;
@XmlElement(nillable = true)
protected String requestId; //请求ID
protected String requestId;
@XmlElement(nillable = true)
protected String requestLevel;
@XmlElement(nillable = true)
protected String requestName; //请求标题
protected String requestName;
@XmlElement(nillable = true)
protected String secLevel;
@XmlElement(nillable = true)
......@@ -141,15 +141,15 @@ public class WorkflowRequestInfo {
@XmlElement(nillable = true)
protected String subnobackButtonName;
@XmlElement(nillable = true)
protected WorkflowBaseInfo workflowBaseInfo; //流程类型
protected WorkflowBaseInfo workflowBaseInfo;
@XmlElement(nillable = true)
protected ArrayOfWorkflowDetailTableInfo workflowDetailTableInfos; //明细表类
protected ArrayOfWorkflowDetailTableInfo workflowDetailTableInfos;
@XmlElement(nillable = true)
protected ArrayOfString workflowHtmlShow;
@XmlElement(nillable = true)
protected ArrayOfString workflowHtmlTemplete;
@XmlElement(nillable = true)
protected WorkflowMainTableInfo workflowMainTableInfo; //主表类
protected WorkflowMainTableInfo workflowMainTableInfo;
@XmlElement(nillable = true)
protected ArrayOfArrayOfString workflowPhrases;
@XmlElement(nillable = true)
......
......@@ -10,7 +10,7 @@ import javax.xml.ws.Service;
/**
* This class was generated by Apache CXF 3.3.9
* 2021-03-18T14:16:04.152+08:00
* 2021-03-23T14:30:20.449+08:00
* Generated source version: 3.3.9
*
*/
......
......@@ -10,7 +10,7 @@ import javax.xml.ws.ResponseWrapper;
/**
* This class was generated by Apache CXF 3.3.9
* 2021-03-18T14:16:04.114+08:00
* 2021-03-23T14:30:20.409+08:00
* Generated source version: 3.3.9
*
*/
......
package com.dianmi;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import com.alibaba.fastjson.JSONObject;
import com.dianmi.entity.WorkflowDetailTableInfoEntity;
import com.dianmi.entity.WorkflowRequestTableField;
import com.dianmi.entity.WorkflowRequestTableRecord;
import com.dianmi.util.HttpManager;
import com.dianmi.util.IdentityVerifyUtil;
/**
* 流程创建实例
* description :
* author :JHY
* date : 2020/4/29
* version : 1.0
*/
public class RequestCreateDemo {
public static void main(String[] args) {
RequestCreateDemo demo = new RequestCreateDemo();
demo.createRequest("A5", "1");
}
/**
* 创建流程入口
* @param requestnamesuffix
* @param userid
*/
public void createRequest(String requestnamesuffix, String userid) {
IdentityVerifyUtil identityVerifyUtil = IdentityVerifyUtil.getInstance();
String spk = identityVerifyUtil.getSPK();
String secret = identityVerifyUtil.getSECRET();
String token = identityVerifyUtil.getToken();
if (spk == null || secret == null || token == null) {
return;
}
String url = IdentityVerifyUtil.HOST + "/api/workflow/paService/getCreateWorkflowList";
HttpManager http = new HttpManager();
Map<String, String> heads = IdentityVerifyUtil.getHttpHeads(token,userid,spk);
Map<String, String> params = new HashMap<>();
/*params.put("requestName", "2020-04月考勤报表确认(采购部)--" + requestnamesuffix);
params.put("mainData", getFormMainData());
params.put("detailData",getFormDetailData());
params.put("workflowId", "45");
params.put("remark","restful接口创建流程测试");*/
params.put("conditions","{\"wfTypeIds\":1}");
try {
String res = http.postDataSSL(url, params, heads);
System.out.println("请求结果:"+res);
} catch (Exception e) {
e.printStackTrace();
}
}
/**
* 主表数据
*
* 附件上传 包含base64, http等
* 包含浏览框数据,单行文本数据
* @return
*/
private String getFormMainData(){
List<WorkflowRequestTableField> mainData = new ArrayList<>();
WorkflowRequestTableField field1 = new WorkflowRequestTableField();
//附件上传字段
field1.setFieldName("tpsc");
List<Map<String,String>> fileInfo = new ArrayList<>();
Map<String,String> fileItem1 = new HashMap<>();
fileItem1.put("fileName","t01d0b9e7421ad092b5.jpg");
String str1 = "base64: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";
fileItem1.put("filePath",str1);
fileInfo.add(fileItem1);
Map<String,String> fileItem2 = new HashMap<>();
fileItem2.put("fileName","scm_8802d1a86_4.png");
fileItem2.put("filePath","http://scm.ddimg.mobi/scm_8802d1a86_4.png");
//fileInfo.add(fileItem2);
field1.setFieldValue(JSONObject.toJSONString(fileInfo));
mainData.add(field1);
//单行文本字段
WorkflowRequestTableField field2 = new WorkflowRequestTableField();
field2.setFieldName("dhwb");
field2.setFieldValue("create request demo");
mainData.add(field2);
//单人力资源字段
WorkflowRequestTableField field3 = new WorkflowRequestTableField();
field3.setFieldName("drlzy");
field3.setFieldValue("2979");
mainData.add(field3);
return JSONObject.toJSONString(mainData);
}
/**
* 明细数据
* @return
*/
private String getFormDetailData(){
List<WorkflowDetailTableInfoEntity> details = new ArrayList<>();
//明细信息
WorkflowDetailTableInfoEntity detail1 = new WorkflowDetailTableInfoEntity();
detail1.setTableDBName("formtable_main_1356_dt1");
//明细数据
List<WorkflowRequestTableRecord> detailRows = new ArrayList<>();
WorkflowRequestTableRecord row1 = new WorkflowRequestTableRecord();
//明细行数据
List<WorkflowRequestTableField> rowDatas = new ArrayList<>();
//行字段数据
WorkflowRequestTableField field1 = new WorkflowRequestTableField();
field1.setFieldName("dhwb");
field1.setFieldValue("test01");
rowDatas.add(field1);
WorkflowRequestTableField field2 = new WorkflowRequestTableField();
field2.setFieldName("drl");
field2.setFieldValue("2978,2979");
rowDatas.add(field2);
row1.setRecordOrder(0);
row1.setWorkflowRequestTableFields(rowDatas);
detailRows.add(row1);
detail1.setWorkflowRequestTableRecords(detailRows);
details.add(detail1);
return JSONObject.toJSONString(details);
}
}
package com.dianmi;
import java.util.HashMap;
import java.util.Map;
import com.alibaba.fastjson.JSONObject;
import com.dianmi.util.HttpManager;
import com.dianmi.util.IdentityVerifyUtil;
/**
* 流程退回实例
* description :
* author :JHY
* date : 2020/6/4
* version : 1.0
*/
public class RequestRejectDemo {
public static void main(String[] args) {
rejectRequest("3466560", "2979");
}
/**
* 流程退回
*/
public static void rejectRequest(String requestid, String userid) {
IdentityVerifyUtil identityVerifyUtil = IdentityVerifyUtil.getInstance();
String spk = identityVerifyUtil.getSPK();
String secret = identityVerifyUtil.getSECRET();
String token = identityVerifyUtil.getToken();
if (spk == null || secret == null || token == null) {
return;
}
Map<String, String> heads = IdentityVerifyUtil.getHttpHeads(token, userid, spk);
String url = IdentityVerifyUtil.HOST + "/api/workflow/paService/rejectRequest";
HttpManager http = new HttpManager();
Map<String, String> params = new HashMap<>();
params.put("requestId", requestid);
params.put("remark", "restful接口退回流程测试");
//默认是按出口退回
//自由退回参数设置
Map<String, String> otherParams = new HashMap<>();
otherParams.put("RejectToType", "0");
otherParams.put("RejectToNodeid", "3974");
params.put("otherParams", JSONObject.toJSONString(otherParams));
try {
String res = http.postDataSSL(url, params, heads);
System.out.println(res);
} catch (Exception e) {
e.printStackTrace();
}
}
}
package com.dianmi;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import com.alibaba.fastjson.JSONObject;
import com.dianmi.entity.WorkflowDetailTableInfoEntity;
import com.dianmi.entity.WorkflowRequestTableField;
import com.dianmi.entity.WorkflowRequestTableRecord;
import com.dianmi.util.HttpManager;
import com.dianmi.util.IdentityVerifyUtil;
/**
* 流程提交实例
* description :
* author :JHY
* date : 2020/6/4
* version : 1.0
*/
public class RequestSubmitDemo {
public static void main(String[] args) {
RequestSubmitDemo submitDemo = new RequestSubmitDemo();
submitDemo.submitRequest("3467562", "2982");
}
public void submitRequest(String requestid, String userid) {
IdentityVerifyUtil identityVerifyUtil = IdentityVerifyUtil.getInstance();
String spk = identityVerifyUtil.getSPK();
String secret = identityVerifyUtil.getSECRET();
String token = identityVerifyUtil.getToken();
if (spk == null || secret == null || token == null) {
return;
}
Map<String, String> heads = IdentityVerifyUtil.getHttpHeads(token, userid, spk);
String url = IdentityVerifyUtil.HOST + "/api/workflow/paService/submitRequest";
HttpManager http = new HttpManager();
Map<String, String> params = new HashMap<>();
params.put("requestId", requestid);
params.put("detailData", getFormDetailData());
params.put("remark", "restful接口提交流程测试");
try {
String result = http.postDataSSL(url, params, heads);
System.out.println(result);
} catch (Exception e) {
e.printStackTrace();
}
}
/**
* 流程提交明细数据处理
* 涉及到明细 数据删除、修改、新增
*
* @return
*/
private String getFormDetailData() {
List<WorkflowDetailTableInfoEntity> details = new ArrayList<>();
//明细信息
WorkflowDetailTableInfoEntity detail1 = new WorkflowDetailTableInfoEntity();
detail1.setTableDBName("formtable_main_1356_dt1");
//删除明细行ID
detail1.setDeleteKeys("344");
//明细数据
List<WorkflowRequestTableRecord> detailRows = new ArrayList<>();
WorkflowRequestTableRecord row1 = new WorkflowRequestTableRecord();
//明细行数据
List<WorkflowRequestTableField> row1Datas = new ArrayList<>();
//行字段数据
WorkflowRequestTableField row1field1 = new WorkflowRequestTableField();
row1field1.setFieldName("dhwb");
row1field1.setFieldValue("test02");
row1Datas.add(row1field1);
WorkflowRequestTableField row1field2 = new WorkflowRequestTableField();
row1field2.setFieldName("drl");
row1field2.setFieldValue("2978,2980,2981");
row1Datas.add(row1field2);
row1.setRecordOrder(0);
row1.setWorkflowRequestTableFields(row1Datas);
//明细行2
WorkflowRequestTableRecord row2 = new WorkflowRequestTableRecord();
List<WorkflowRequestTableField> row2Datas = new ArrayList<>();
//行字段数据
WorkflowRequestTableField row2field1 = new WorkflowRequestTableField();
row2field1.setFieldName("dhwb");
row2field1.setFieldValue("test01-update-338");
row2Datas.add(row2field1);
//行字段数据
WorkflowRequestTableField row2field2 = new WorkflowRequestTableField();
row2field2.setFieldName("drl");
row2field2.setFieldValue("2982,2983");
row2Datas.add(row2field2);
row2.setRecordOrder(338);
row2.setWorkflowRequestTableFields(row2Datas);
//明细行3
WorkflowRequestTableRecord row3 = new WorkflowRequestTableRecord();
List<WorkflowRequestTableField> row3Datas = new ArrayList<>();
//行字段数据
WorkflowRequestTableField row3field1 = new WorkflowRequestTableField();
row3field1.setFieldName("dhwb");
row3field1.setFieldValue("test01-update");
row3Datas.add(row3field1);
row3.setRecordOrder(348);
row3.setWorkflowRequestTableFields(row3Datas);
//明细行4
WorkflowRequestTableRecord row4 = new WorkflowRequestTableRecord();
List<WorkflowRequestTableField> row4Datas = new ArrayList<>();
//行字段数据
WorkflowRequestTableField row4field1 = new WorkflowRequestTableField();
row4field1.setFieldName("dhwb");
row4field1.setFieldValue("test01-update-339");
row4Datas.add(row4field1);
//行字段数据
WorkflowRequestTableField row4field2 = new WorkflowRequestTableField();
row4field2.setFieldName("xlk");
row4field2.setFieldValue("2");
row4Datas.add(row4field2);
row4.setRecordOrder(349);
row4.setWorkflowRequestTableFields(row4Datas);
detailRows.add(row2);
detailRows.add(row4);
detailRows.add(row3);
detailRows.add(row1);
detail1.setWorkflowRequestTableRecords(detailRows);
details.add(detail1);
return JSONObject.toJSONString(details);
}
}
package com.dianmi;
import java.net.MalformedURLException;
import java.net.URL;
import org.apache.commons.lang.builder.ToStringBuilder;
import com.alibaba.fastjson.JSONObject;
import com.dianmi.ws.ArrayOfString;
import com.dianmi.ws.WorkflowRequestInfo;
import com.dianmi.ws.WorkflowService;
public class WsTest {
public static void main(String[] args) {
try {
WorkflowService workflowService = new WorkflowService(new URL("http://120.132.8.136/services/WorkflowService?wsdl"));
//WorkflowRequestInfo wo = workflowService.getWorkflowServiceHttpPort().
// getWorkflowRequest(62067, 1, 0);
//System.out.println(JSONObject.toJSONString(wo));
ArrayOfString aos = new ArrayOfString();
//aos.getString().add("workflowId=45");
System.out.println(JSONObject.toJSONString(workflowService.getWorkflowServiceHttpPort()
.getCreateWorkflowList(1, 20, 100, 1, 23, aos)));
} catch (MalformedURLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
package com.dianmi.entity;
import java.io.Serializable;
import java.util.List;
/**
* description :
* author :JHY
* date : 2020/5/13
* version : 1.0
*/
public class WorkflowDetailTableInfoEntity implements Serializable {
/**
*
*/
private static final long serialVersionUID = 1328729781044551608L;
/**
* 明细表标题
*/
private String tableTitle;
/**
* 数据库明细表名
*/
private String tableDBName;
/**
* 明细表字段名称
*/
private String[] tableFieldName;
/**
* 删除数据ID
*/
private String deleteKeys;
/**
* 明细表列表
*/
private List<WorkflowRequestTableRecord> workflowRequestTableRecords;
public String getTableTitle() {
return tableTitle;
}
public void setTableTitle(String tableTitle) {
this.tableTitle = tableTitle;
}
public String getTableDBName() {
return tableDBName;
}
public void setTableDBName(String tableDBName) {
this.tableDBName = tableDBName;
}
public String[] getTableFieldName() {
return tableFieldName;
}
public void setTableFieldName(String[] tableFieldName) {
this.tableFieldName = tableFieldName;
}
public List<WorkflowRequestTableRecord> getWorkflowRequestTableRecords() {
return workflowRequestTableRecords;
}
public void setWorkflowRequestTableRecords(List<WorkflowRequestTableRecord> workflowRequestTableRecords) {
this.workflowRequestTableRecords = workflowRequestTableRecords;
}
public String getDeleteKeys() {
return deleteKeys;
}
public void setDeleteKeys(String deleteKeys) {
this.deleteKeys = deleteKeys;
}
}
package com.dianmi.entity;
import java.io.Serializable;
/**
* 工作流字段信息
*/
public class WorkflowRequestTableField implements Serializable {
/**
*
*/
private static final long serialVersionUID = -2865596549306206630L;
/**
* 字段ID
*/
private String fieldId;
/**
* 字段名称
*/
private String fieldName;
/**
* 字段值
*/
private String fieldValue;
/**
* 界面字段表现形式
*/
private String fieldHtmlType;
/**
* 界面字段类型
*/
private String fieldType;
/**
* 数据库字段类型
*/
private String fieldDBType;
/**
* 表单中提交的字段名
*/
private String fieldFormName;
/**
* 显示顺序
*/
private int fieldOrder;
/**
* 是否显示
*/
private boolean isView;
/**
* 是否可编辑
*/
private boolean isEdit;
/**
* 是否必填
*/
private boolean isMand;
/**
* 显示字段名称
*/
private String fieldShowName;
/**
* 浏览框字段URL
*/
private String browserurl;
/**
* 下拉框字段信息
*/
private String[] selectnames;
private String[] selectvalues;
/**
* 显示字段值
*/
private String fieldShowValue;
/**
* 字段html显示
*/
private String filedHtmlShow;
public String getFieldName() {
return fieldName;
}
public void setFieldName(String fieldName) {
this.fieldName = fieldName;
}
public String getFieldValue() {
return fieldValue;
}
public void setFieldValue(String fieldValue) {
this.fieldValue = fieldValue;
}
public String getFieldHtmlType() {
return fieldHtmlType;
}
public void setFieldHtmlType(String fieldHtmlType) {
this.fieldHtmlType = fieldHtmlType;
}
public String getFieldType() {
return fieldType;
}
public void setFieldType(String fieldType) {
this.fieldType = fieldType;
}
public String getFieldDBType() {
return fieldDBType;
}
public void setFieldDBType(String fieldDBType) {
this.fieldDBType = fieldDBType;
}
public String getFieldFormName() {
return fieldFormName;
}
public void setFieldFormName(String fieldFormName) {
this.fieldFormName = fieldFormName;
}
public int getFieldOrder() {
return fieldOrder;
}
public void setFieldOrder(int fieldOrder) {
this.fieldOrder = fieldOrder;
}
public boolean isView() {
return isView;
}
public void setView(boolean isView) {
this.isView = isView;
}
public boolean isEdit() {
return isEdit;
}
public void setEdit(boolean isEdit) {
this.isEdit = isEdit;
}
public boolean isMand() {
return isMand;
}
public void setMand(boolean isMand) {
this.isMand = isMand;
}
public String getFieldShowName() {
return fieldShowName;
}
public void setFieldShowName(String fieldShowName) {
this.fieldShowName = fieldShowName;
}
public String getFieldShowValue() {
return fieldShowValue;
}
public void setFieldShowValue(String fieldShowValue) {
this.fieldShowValue = fieldShowValue;
}
public String getBrowserurl() {
return browserurl;
}
public void setBrowserurl(String browserurl) {
this.browserurl = browserurl;
}
public String[] getSelectnames() {
return selectnames;
}
public void setSelectnames(String[] selectnames) {
this.selectnames = selectnames;
}
public String[] getSelectvalues() {
return selectvalues;
}
public void setSelectvalues(String[] selectvalues) {
this.selectvalues = selectvalues;
}
public String getFiledHtmlShow() {
return filedHtmlShow;
}
public void setFiledHtmlShow(String filedHtmlShow) {
this.filedHtmlShow = filedHtmlShow;
}
public String getFieldId() {
return fieldId;
}
public void setFieldId(String fieldId) {
this.fieldId = fieldId;
}
}
package com.dianmi.entity;
import java.io.Serializable;
import java.util.List;
public class WorkflowRequestTableRecord implements Serializable {
/**
*
*/
private static final long serialVersionUID = -202638298244870735L;
//修改时明细行ID,新增时赋0
private int recordOrder;
private List<WorkflowRequestTableField> workflowRequestTableFields;
public int getRecordOrder() {
return recordOrder;
}
public void setRecordOrder(int recordOrder) {
this.recordOrder = recordOrder;
}
public List<WorkflowRequestTableField> getWorkflowRequestTableFields() {
return workflowRequestTableFields;
}
public void setWorkflowRequestTableFields(List<WorkflowRequestTableField> workflowRequestTableFields) {
this.workflowRequestTableFields = workflowRequestTableFields;
}
}
/*
*
* Copyright (c) 2001-2018 泛微软件.
* 泛微协同商务系统,版权所有.
*
*/
package com.dianmi.util;
import java.io.ByteArrayOutputStream;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.io.OutputStream;
import java.io.UnsupportedEncodingException;
import java.net.URISyntaxException;
import java.security.KeyManagementException;
import java.security.NoSuchAlgorithmException;
import java.security.cert.CertificateException;
import java.util.ArrayList;
import java.util.List;
import java.util.Map;
import javax.net.ssl.SSLContext;
import javax.net.ssl.TrustManager;
import javax.net.ssl.X509TrustManager;
import org.apache.commons.lang3.StringUtils;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
import org.apache.http.Header;
import org.apache.http.HeaderElement;
import org.apache.http.HttpEntity;
import org.apache.http.HttpResponse;
import org.apache.http.NameValuePair;
import org.apache.http.client.ClientProtocolException;
import org.apache.http.client.CookieStore;
import org.apache.http.client.config.RequestConfig;
import org.apache.http.client.entity.UrlEncodedFormEntity;
import org.apache.http.client.methods.CloseableHttpResponse;
import org.apache.http.client.methods.HttpDelete;
import org.apache.http.client.methods.HttpGet;
import org.apache.http.client.methods.HttpPatch;
import org.apache.http.client.methods.HttpPost;
import org.apache.http.client.methods.HttpPut;
import org.apache.http.client.utils.URIBuilder;
import org.apache.http.config.Registry;
import org.apache.http.config.RegistryBuilder;
import org.apache.http.conn.HttpHostConnectException;
import org.apache.http.conn.socket.ConnectionSocketFactory;
import org.apache.http.conn.socket.PlainConnectionSocketFactory;
import org.apache.http.conn.ssl.SSLConnectionSocketFactory;
import org.apache.http.entity.ByteArrayEntity;
import org.apache.http.entity.ContentType;
import org.apache.http.entity.mime.MultipartEntityBuilder;
import org.apache.http.impl.client.BasicCookieStore;
import org.apache.http.impl.client.CloseableHttpClient;
import org.apache.http.impl.client.HttpClients;
import org.apache.http.impl.conn.PoolingHttpClientConnectionManager;
import org.apache.http.message.BasicNameValuePair;
import org.apache.http.util.CharArrayBuffer;
import org.apache.http.util.EntityUtils;
/**
* HttpManager http操作管理工具
*
* @author AndyZhang 2018-8-20
* 1 支持传输json为内容的数据 10-20
* 2 更新所有的操作 CURD 包含上传 下载 全了 11-23
* @version 1.0
*/
public class HttpManager {
private static final Log logger = LogFactory.getLog(HttpManager.class);
public CookieStore cookieStore = new BasicCookieStore();
private CloseableHttpClient getHttpClientSSL() throws KeyManagementException, NoSuchAlgorithmException {
SSLContext sslcontext = null;
try {
sslcontext = createIgnoreVerifySSL();
} catch (Exception ex) {
//logger.error(ex.getMessage());
}
Registry<ConnectionSocketFactory> socketFactoryRegistry;
if (sslcontext != null)
socketFactoryRegistry = RegistryBuilder.<ConnectionSocketFactory>create()
.register("http", PlainConnectionSocketFactory.INSTANCE)
.register("https", new SSLConnectionSocketFactory(sslcontext))
.build();
else
socketFactoryRegistry = RegistryBuilder.<ConnectionSocketFactory>create()
.register("http", PlainConnectionSocketFactory.INSTANCE)
.build();
PoolingHttpClientConnectionManager connManager = new PoolingHttpClientConnectionManager(socketFactoryRegistry);
HttpClients.custom().setConnectionManager(connManager);
RequestConfig defaultRequestConfig = RequestConfig.custom()
.setSocketTimeout(30000)
.setConnectTimeout(30000)
.setConnectionRequestTimeout(30000)
.setStaleConnectionCheckEnabled(true)
.build();
CloseableHttpClient client = HttpClients.custom()
.setConnectionManager(connManager)
.setDefaultCookieStore(cookieStore)
.setDefaultRequestConfig(defaultRequestConfig)
.build();
return client;
}
private CloseableHttpClient getHttpClient() throws KeyManagementException, NoSuchAlgorithmException {
SSLContext sslcontext = createIgnoreVerifySSL();
Registry<ConnectionSocketFactory> socketFactoryRegistry = RegistryBuilder.<ConnectionSocketFactory>create()
.register("http", PlainConnectionSocketFactory.INSTANCE)
.build();
PoolingHttpClientConnectionManager connManager = new PoolingHttpClientConnectionManager(socketFactoryRegistry);
HttpClients.custom().setConnectionManager(connManager);
RequestConfig defaultRequestConfig = RequestConfig.custom()
.setSocketTimeout(5000)
.setConnectTimeout(5000)
.setConnectionRequestTimeout(5000)
.setStaleConnectionCheckEnabled(true)
.build();
CloseableHttpClient client = HttpClients.custom()
.setConnectionManager(connManager)
.setDefaultCookieStore(cookieStore)
.setDefaultRequestConfig(defaultRequestConfig)
.build();
return client;
}
/**
* get请求,参数放在map里
*
* @param url 请求地址
* @param param 参数map
* @return 响应
*/
public String getData(String url, Map<String, String> param, Map<String, String> headers) {
String result = null;
CloseableHttpClient httpClient = HttpClients.createDefault();
CloseableHttpResponse response = null;
try {
URIBuilder builder = new URIBuilder(url);
for (Map.Entry<String, String> entry : param.entrySet()) {
builder.addParameter(entry.getKey(), entry.getValue());
}
HttpGet get = new HttpGet(builder.build());
if (headers != null)
for (Map.Entry<String, String> entry : headers.entrySet()) {
get.setHeader(entry.getKey(), entry.getValue());
}
response = httpClient.execute(get);
if (response != null && response.getStatusLine().getStatusCode() == 200) {
HttpEntity entity = response.getEntity();
result = entityToString(entity);
}
return result;
} catch (URISyntaxException e) {
e.printStackTrace();
} catch (ClientProtocolException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
} finally {
try {
httpClient.close();
if (response != null) {
response.close();
}
} catch (IOException e) {
e.printStackTrace();
}
}
return null;
}
/**
* get请求,参数放在map里
*
* @param url
* @param param
* @return
*/
public String getData(String url, Map<String, String> param) {
return getData(url, param, null);
}
public String getDataSSL(String url, Map<String, String> param) throws KeyManagementException, NoSuchAlgorithmException {
return getDataSSL(url, param, null);
}
/**
* SSL协议 get请求,参数放在map里
*
* @param url 请求地址
* @param param 参数map
* @return 响应
* @throws NoSuchAlgorithmException
* @throws KeyManagementException
*/
public String getDataSSL(String url, Map<String, String> param, Map<String, String> headers) throws KeyManagementException, NoSuchAlgorithmException {
String result = null;
CloseableHttpClient httpClient = getHttpClientSSL();
CloseableHttpResponse response = null;
try {
URIBuilder builder = new URIBuilder(url);
for (Map.Entry<String, String> entry : param.entrySet()) {
builder.addParameter(entry.getKey(), entry.getValue());
}
HttpGet get = new HttpGet(builder.build());
if (headers != null)
for (Map.Entry<String, String> entry : headers.entrySet()) {
get.setHeader(entry.getKey(), entry.getValue());
}
response = httpClient.execute(get);
if (response != null && response.getStatusLine().getStatusCode() == 200) {
HttpEntity entity = response.getEntity();
result = entityToString(entity);
}
return result;
} catch (URISyntaxException | ClientProtocolException | HttpHostConnectException e) {
logger.error("请求地址:" + url + ",请求参数:" + param + ",响应数据:" + result);
e.printStackTrace();
throw new KeyManagementException(e);
} catch (IOException e) {
logger.error("请求地址:" + url + ",请求参数:" + param + ",响应数据:" + result);
e.printStackTrace();
} finally {
try {
httpClient.close();
if (response != null) {
response.close();
}
} catch (IOException e) {
e.printStackTrace();
}
}
return null;
}
/**
* SSL协议 get请求,参数放在map里 参数直接拼接在url后面
*
* @param url 请求地址
* @param param 参数map
* @return 响应
* @throws NoSuchAlgorithmException
* @throws KeyManagementException
*/
public String getDataSSLUrl(String url, Map<String, String> param, Map<String, String> headers) throws KeyManagementException, NoSuchAlgorithmException {
String result = null;
CloseableHttpClient httpClient = getHttpClientSSL();
CloseableHttpResponse response = null;
try {
StringBuilder stringBuilder = new StringBuilder();
if (param != null)
for (Map.Entry<String, String> entry : param.entrySet()) {
stringBuilder.append(entry.getKey());
if (entry.getValue() != null)
stringBuilder.append("=").append(entry.getValue());
stringBuilder.append("&");
}
if (stringBuilder.length() > 0)
url = addUrlParam(url, stringBuilder.substring(0, stringBuilder.length() - 1));
URIBuilder builder = new URIBuilder(url);
// for(Map.Entry<String,String> entry : param.entrySet())
// {
// builder.addParameter(entry.getKey(),entry.getValue());
// }
//
//
HttpGet get = new HttpGet(builder.build());
if (headers != null)
for (Map.Entry<String, String> entry : headers.entrySet()) {
get.setHeader(entry.getKey(), entry.getValue());
}
response = httpClient.execute(get);
if (response != null && response.getStatusLine().getStatusCode() == 200) {
HttpEntity entity = response.getEntity();
result = entityToString(entity);
}
return result;
} catch (URISyntaxException | ClientProtocolException | HttpHostConnectException e) {
logger.error("请求地址:" + url + ",请求参数:" + param + ",响应数据:" + result);
e.printStackTrace();
throw new KeyManagementException(e);
} catch (IOException e) {
logger.error("请求地址:" + url + ",请求参数:" + param + ",响应数据:" + result);
e.printStackTrace();
} finally {
try {
httpClient.close();
if (response != null) {
response.close();
}
} catch (IOException e) {
e.printStackTrace();
}
}
return null;
}
/**
* SSL协议 delete请求,参数放在map里
*
* @param url 请求地址
* @param param 参数map
* @return 响应
* @throws NoSuchAlgorithmException
* @throws KeyManagementException
*/
public String patchDataSSL(String url, Map<String, String> param, Map<String, String> headers) throws KeyManagementException, NoSuchAlgorithmException {
String result = null;
CloseableHttpClient httpClient = getHttpClientSSL();
CloseableHttpResponse response = null;
try {
URIBuilder builder = new URIBuilder(url);
for (Map.Entry<String, String> entry : param.entrySet()) {
builder.addParameter(entry.getKey(), entry.getValue());
}
HttpPatch patch = new HttpPatch(builder.build());
if (headers != null)
for (Map.Entry<String, String> entry : headers.entrySet()) {
patch.setHeader(entry.getKey(), entry.getValue());
}
response = httpClient.execute(patch);
if (response != null && response.getStatusLine().getStatusCode() == 200) {
HttpEntity entity = response.getEntity();
result = entityToString(entity);
}
return result;
} catch (URISyntaxException e) {
e.printStackTrace();
} catch (ClientProtocolException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
} finally {
try {
httpClient.close();
if (response != null) {
response.close();
}
} catch (IOException e) {
e.printStackTrace();
}
}
return null;
}
/**
* SSL协议 delete请求,参数放在map里
*
* @param url 请求地址
* @param param 参数map
* @return 响应
* @throws NoSuchAlgorithmException
* @throws KeyManagementException
*/
public String putDataSSL(String url, Map<String, String> param, Map<String, String> headers) throws KeyManagementException, NoSuchAlgorithmException {
String result = null;
CloseableHttpClient httpClient = getHttpClientSSL();
CloseableHttpResponse response = null;
try {
URIBuilder builder = new URIBuilder(url);
for (Map.Entry<String, String> entry : param.entrySet()) {
builder.addParameter(entry.getKey(), entry.getValue());
}
HttpPut put = new HttpPut(builder.build());
if (headers != null)
for (Map.Entry<String, String> entry : headers.entrySet()) {
put.setHeader(entry.getKey(), entry.getValue());
}
response = httpClient.execute(put);
if (response != null && response.getStatusLine().getStatusCode() == 200) {
HttpEntity entity = response.getEntity();
result = entityToString(entity);
}
return result;
} catch (URISyntaxException e) {
e.printStackTrace();
} catch (ClientProtocolException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
} finally {
try {
httpClient.close();
if (response != null) {
response.close();
}
} catch (IOException e) {
e.printStackTrace();
}
}
return null;
}
/**
* SSL协议 delete请求,参数放在map里
*
* @param url 请求地址
* @param param 参数map
* @return 响应
* @throws NoSuchAlgorithmException
* @throws KeyManagementException
*/
public String deleteDataSSL(String url, Map<String, String> param, Map<String, String> headers) throws KeyManagementException, NoSuchAlgorithmException {
String result = null;
CloseableHttpClient httpClient = getHttpClientSSL();
CloseableHttpResponse response = null;
try {
URIBuilder builder = new URIBuilder(url);
for (Map.Entry<String, String> entry : param.entrySet()) {
builder.addParameter(entry.getKey(), entry.getValue());
}
HttpDelete delete = new HttpDelete(builder.build());
if (headers != null)
for (Map.Entry<String, String> entry : headers.entrySet()) {
delete.setHeader(entry.getKey(), entry.getValue());
}
response = httpClient.execute(delete);
if (response != null && response.getStatusLine().getStatusCode() == 200) {
HttpEntity entity = response.getEntity();
result = entityToString(entity);
}
return result;
} catch (URISyntaxException e) {
e.printStackTrace();
} catch (ClientProtocolException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
} finally {
try {
httpClient.close();
if (response != null) {
response.close();
}
} catch (IOException e) {
e.printStackTrace();
}
}
return null;
}
/**
* 发送post请求,参数用map接收
*
* @param url 地址
* @param param 参数
* @return 返回值
*/
public String postData(String url, Map<String, String> param, Map<String, String> headers) {
String result = null;
CloseableHttpClient httpClient = HttpClients.createDefault();
HttpPost post = new HttpPost(url);
List<NameValuePair> pairs = new ArrayList<NameValuePair>();
for (Map.Entry<String, String> entry : param.entrySet()) {
pairs.add(new BasicNameValuePair(entry.getKey(), entry.getValue()));
}
CloseableHttpResponse response = null;
try {
post.setEntity(new UrlEncodedFormEntity(pairs, "UTF-8"));
if (headers != null)
for (Map.Entry<String, String> entry : headers.entrySet()) {
post.setHeader(entry.getKey(), entry.getValue());
}
response = httpClient.execute(post);
if (response != null && response.getStatusLine().getStatusCode() == 200) {
HttpEntity entity = response.getEntity();
result = entityToString(entity);
}
return result;
} catch (UnsupportedEncodingException e) {
e.printStackTrace();
} catch (ClientProtocolException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
} finally {
try {
httpClient.close();
if (response != null) {
response.close();
}
} catch (IOException e) {
e.printStackTrace();
}
}
return null;
}
/**
* 发送post请求,参数用map接收
*
* @param url 地址
* @param param 参数
* @return 返回值
*/
public String postData(String url, Map<String, String> param) {
return postData(url, param, null);
}
/**
* SSL协议发送post请求,参数用map接收
*
* @param url 地址
* @param param 参数
* @return 返回值
*/
public String postDataSSL(String url, Map<String, String> param) throws KeyManagementException, NoSuchAlgorithmException {
return postDataSSL(url, param, null);
}
/**
* SSL协议发送post请求,参数用map接收
*
* @param url 地址
* @param param 参数
* @return 返回值
* @throws NoSuchAlgorithmException
* @throws KeyManagementException
*/
public String postDataSSL(String url, Map<String, String> param, Map<String, String> headers) throws KeyManagementException, NoSuchAlgorithmException {
String result = null;
CloseableHttpClient httpClient = getHttpClientSSL();
HttpPost post = new HttpPost(url);
List<NameValuePair> pairs = new ArrayList<NameValuePair>();
for (Map.Entry<String, String> entry : param.entrySet()) {
pairs.add(new BasicNameValuePair(entry.getKey(), entry.getValue()));
}
CloseableHttpResponse response = null;
try {
post.setEntity(new UrlEncodedFormEntity(pairs, "UTF-8"));
if (headers != null)
for (Map.Entry<String, String> entry : headers.entrySet()) {
post.setHeader(entry.getKey(), entry.getValue());
}
response = httpClient.execute(post);
if (response != null && response.getStatusLine().getStatusCode() == 200) {
HttpEntity entity = response.getEntity();
result = entityToString(entity);
}
return result;
} catch (UnsupportedEncodingException e) {
e.printStackTrace();
} catch (ClientProtocolException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
} finally {
try {
httpClient.close();
if (response != null) {
response.close();
}
} catch (IOException e) {
e.printStackTrace();
}
}
return null;
}
/**
* post请求,参数为json字符串
*
* @param url 请求地址
* @param jsonString json字符串
* @return 响应
*/
public String postJsonData(String url, String jsonString) {
return postJsonData(url, jsonString, null);
}
/**
* post请求,参数为json字符串
*
* @param url 请求地址
* @param jsonString json字符串
* @return 响应
*/
public String postJsonData(String url, String jsonString, Map<String, String> headers) {
String result = null;
CloseableHttpClient httpClient = HttpClients.createDefault();
HttpPost post = new HttpPost(url);
CloseableHttpResponse response = null;
try {
post.setEntity(new ByteArrayEntity(jsonString.getBytes("UTF-8")));
if (headers != null)
for (Map.Entry<String, String> entry : headers.entrySet()) {
post.setHeader(entry.getKey(), entry.getValue());
}
response = httpClient.execute(post);
if (response != null && response.getStatusLine().getStatusCode() == 200) {
HttpEntity entity = response.getEntity();
result = entityToString(entity);
}
return result;
} catch (UnsupportedEncodingException e) {
e.printStackTrace();
} catch (ClientProtocolException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
} finally {
try {
httpClient.close();
if (response != null) {
response.close();
}
} catch (IOException e) {
e.printStackTrace();
}
}
return null;
}
/**
* post请求,参数为json字符串
*
* @param url 请求地址
* @param jsonString json字符串
* @return 响应
*/
public String postJsonDataSSL(String url, String jsonString) throws KeyManagementException, NoSuchAlgorithmException {
return postJsonDataSSL(url, jsonString, null);
}
/**
* post请求,参数为json字符串
*
* @param url 请求地址
* @param jsonString json字符串
* @return 响应
* @throws NoSuchAlgorithmException
* @throws KeyManagementException
*/
public String postJsonDataSSL(String url, String jsonString, Map<String, String> headers) throws KeyManagementException, NoSuchAlgorithmException {
String result = null;
CloseableHttpClient httpClient = getHttpClientSSL();
HttpPost post = new HttpPost(url);
CloseableHttpResponse response = null;
try {
post.setEntity(new ByteArrayEntity(jsonString.getBytes("UTF-8")));
post.setHeader("Content-type", "application/json");
if (headers != null)
for (Map.Entry<String, String> entry : headers.entrySet()) {
post.setHeader(entry.getKey(), entry.getValue());
}
response = httpClient.execute(post);
if (response != null && response.getStatusLine().getStatusCode() == 200) {
HttpEntity entity = response.getEntity();
result = entityToString(entity);
}
return result;
} catch (UnsupportedEncodingException e) {
e.printStackTrace();
} catch (ClientProtocolException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
} finally {
try {
httpClient.close();
if (response != null) {
response.close();
}
} catch (IOException e) {
e.printStackTrace();
}
}
return null;
}
private String entityToString(HttpEntity entity) throws IOException {
String result = null;
if (entity != null) {
long lenth = entity.getContentLength();
if (lenth != -1 && lenth < 2048) {
result = EntityUtils.toString(entity, "UTF-8");
} else {
InputStreamReader reader1 = new InputStreamReader(entity.getContent(), "UTF-8");
CharArrayBuffer buffer = new CharArrayBuffer(2048);
char[] tmp = new char[1024];
int l;
while ((l = reader1.read(tmp)) != -1) {
buffer.append(tmp, 0, l);
}
result = buffer.toString();
}
}
return result;
}
/**
* 绕过验证
*
* @return
* @throws NoSuchAlgorithmException
* @throws KeyManagementException
*/
public SSLContext createIgnoreVerifySSL() throws NoSuchAlgorithmException, KeyManagementException {
SSLContext sc = SSLContext.getInstance("SSLv3");
// 实现一个X509TrustManager接口,用于绕过验证,不用修改里面的方法
X509TrustManager trustManager = new X509TrustManager() {
@Override
public void checkClientTrusted(
java.security.cert.X509Certificate[] paramArrayOfX509Certificate,
String paramString) throws CertificateException {
}
@Override
public void checkServerTrusted(
java.security.cert.X509Certificate[] paramArrayOfX509Certificate,
String paramString) throws CertificateException {
}
@Override
public java.security.cert.X509Certificate[] getAcceptedIssuers() {
return null;
}
};
sc.init(null, new TrustManager[]{trustManager}, null);
return sc;
}
/**
* 上传文件
*
* @param url
* @param filePath
* @param filekey
* @param headers
* @return
* @throws KeyManagementException
* @throws NoSuchAlgorithmException
*/
public String uploadFile(String url, String filePath, String contentType, String filekey, Map<String, String> param,
Map<String, String> headers)
throws KeyManagementException, NoSuchAlgorithmException {
String result = "";
try {
File file = new File(filePath);
InputStream inStream = new FileInputStream(file);
result = uploadFile(url, inStream, file.getName(), contentType, filekey, param, headers);
} catch (IOException e) {
e.printStackTrace();
} catch (Exception e) {
e.printStackTrace();
} finally {
}
return result;
}
/**
* 上传文件
*
* @param url
* @param inStream
* @param fileName
* @param filekey
* @param headers
* @return
* @throws KeyManagementException
* @throws NoSuchAlgorithmException
*/
public String uploadFile(String url, InputStream inStream, String fileName, String contentType, String filekey,
Map<String, String> param, Map<String, String> headers)
throws KeyManagementException, NoSuchAlgorithmException {
CloseableHttpClient httpClient = getHttpClientSSL();
String result = "";
try {
HttpPost httpPost = new HttpPost(url);
MultipartEntityBuilder builder = MultipartEntityBuilder.create();
builder.addBinaryBody(filekey, inStream, ContentType.create(contentType), fileName);
for (Map.Entry<String, String> item : param.entrySet()) {
builder.addTextBody(item.getKey(), item.getValue());
}
if (headers != null)
for (Map.Entry<String, String> entry : headers.entrySet()) {
httpPost.setHeader(entry.getKey(), entry.getValue());
}
HttpEntity entity = builder.build();
httpPost.setEntity(entity);
HttpResponse response = httpClient.execute(httpPost);
HttpEntity responseEntity = response.getEntity();
if (responseEntity != null) {
result = EntityUtils.toString(responseEntity, "UTF-8");
}
} catch (IOException e) {
e.printStackTrace();
} catch (Exception e) {
e.printStackTrace();
} finally {
try {
httpClient.close();
} catch (IOException e) {
e.printStackTrace();
}
}
return result;
}
/**
* 获取response header中Content-Disposition中的filename值
*
* @param response
* @return
*/
private static String getFileName(HttpResponse response) {
Header contentHeader = response.getFirstHeader("Content-Disposition");
String filename = null;
if (contentHeader != null) {
HeaderElement[] values = contentHeader.getElements();
if (values.length == 1) {
NameValuePair param = values[0].getParameterByName("filename");
if (param != null) {
try {
filename = new String(param.getValue().toString().getBytes("ISO-8859-1"), "GBK");
} catch (Exception e) {
e.printStackTrace();
}
}
}
}
return filename;
}
private static byte[] getbytes(InputStream is) {
ByteArrayOutputStream bos = new ByteArrayOutputStream();
try {
byte[] b = new byte[2048];
int n = 0;
while ((n = is.read(b)) != -1) {
bos.write(b, 0, n);
}
return bos.toByteArray();
} catch (Exception e) {
} finally {
try {
if (is != null) {
is.close();
}
} catch (Exception e) {
}
try {
if (bos != null) {
bos.close();
}
} catch (Exception e) {
}
}
return null;
}
/**
* 根据url下载文件,保存到filepath中
*
* @param url
* @param param
* @return
*/
public boolean downloadFile(String url, OutputStream stream, Map<String, String> param, Map<String, String> headers) {
try {
CloseableHttpClient httpClient = getHttpClientSSL();
HttpGet httpget = new HttpGet(url);
HttpResponse response = httpClient.execute(httpget);
//info.setResult(result);
HttpEntity entity = response.getEntity();
InputStream is = entity.getContent();
byte[] buffer = new byte[10 * 1024];
int ch = 0;
while ((ch = is.read(buffer)) != -1) {
stream.write(buffer, 0, ch);
}
is.close();
stream.flush();
stream.close();
} catch (Exception e) {
e.printStackTrace();
return false;
}
return true;
}
/**
* 根据url下载文件,保存到filepath中
*
* @param url
* @param filepath
* @return
*/
public boolean downloadFile(String url, String filepath, Map<String, String> param, Map<String, String> headers) {
try {
CloseableHttpClient httpClient = getHttpClientSSL();
HttpGet httpget = new HttpGet(url);
HttpResponse response = httpClient.execute(httpget);
HttpEntity entity = response.getEntity();
InputStream is = entity.getContent();
//String str=response.getHeaders("Content-disposition");
File file = new File(filepath);
file.getParentFile().mkdirs();
FileOutputStream fileout = new FileOutputStream(file);
byte[] buffer = new byte[10 * 1024];
int ch = 0;
while ((ch = is.read(buffer)) != -1) {
fileout.write(buffer, 0, ch);
}
is.close();
fileout.flush();
fileout.close();
} catch (Exception e) {
e.printStackTrace();
return false;
}
return true;
}
/**
* 链接地址后追加参数
*/
public static String addUrlParam(String url, String... param) {
if (param != null) {
for (String str : param)
if (StringUtils.isNotBlank(str)) {
if (url.indexOf("?") >= 0) {
url += "&" + str;
} else {
url += "?" + str;
}
}
}
return url;
}
}
package com.dianmi.util;
import java.util.HashMap;
import java.util.Map;
import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONObject;
import weaver.rsa.security.RSA;
/**
* description :
* author :JHY
* date : 2020/6/3
* version : 1.0
*/
public class IdentityVerifyUtil {
public static final String APPID = "EEAA5436-7577-4BE0-8C6C-89E9D88805EA";
public static final String HOST = "http://192.168.1.228:8090";
//系统公钥信息
private String SPK = null;
//秘钥信息
private String SECRET = null;
private static IdentityVerifyUtil instance;
public static synchronized IdentityVerifyUtil getInstance() {
if (instance == null) {
instance = new IdentityVerifyUtil();
instance.regist();
}
return instance;
}
private IdentityVerifyUtil() {
}
private void regist() {
//httpclient的使用请自己封装,可参考ECOLOGY中HttpManager类
HttpManager http = new HttpManager();
//请求头信息封装集合
Map<String, String> heads = new HashMap<String, String>();
//获取当前异构系统RSA加密的公钥
String cpk = RSA.getRSA_PUB();
//当前异构系统用于向ECOLOGY注册时使用的账号密码通过DES加密后密文进行传输
//kb1906及以上版本 已废弃账号密码校验
//封装参数到请求头
heads.put("appid", APPID);
heads.put("cpk", cpk);
//调用ECOLOGY系统接口进行注册
try {
String data = http.postDataSSL(HOST + "/api/ec/dev/auth/regist", new HashMap<>(), heads);
//返回的数据格式为json,具体格式参数格式请参考文末API介绍。
//注意此时如果注册成功会返回秘钥信息,请根据业务需要进行保存。
if (data != null) {
JSONObject result = JSON.parseObject(data);
if ("true".equals(result.getString("status"))) {
this.SPK = result.getString("spk");
this.SECRET = result.getString("secrit");
}
}
} catch (Exception e) {
e.printStackTrace();
}
}
public String getToken() {
//httpclient的使用请自己封装,可参考ECOLOGY中HttpManager类
HttpManager http = new HttpManager();
//请求头信息封装集合
Map<String, String> heads = new HashMap<String, String>();
RSA rsa = new RSA();
//对秘钥进行加密传输,防止篡改数据
String secret = rsa.encrypt(null, SECRET, null, "utf-8", SPK, false);
//封装参数到请求头
heads.put("appid", APPID);
heads.put("secret", secret);
//调用ECOLOGY系统接口进行申请
try {
String data = http.postDataSSL(HOST + "/api/ec/dev/auth/applytoken", new HashMap<>(), heads);
if (data != null) {
JSONObject res = JSON.parseObject(data);
if ("true".equals(res.getString("status"))) {
return res.getString("token");
}
}
} catch (Exception e) {
e.printStackTrace();
}
return null;
}
/**
* 获取请求头信息
* @param token
* @param userid
* @param spk
* @return
*/
public static Map<String, String> getHttpHeads(String token,String userid,String spk){
Map<String, String> heads = new HashMap<>();
heads.put("token", token);
heads.put("appid", IdentityVerifyUtil.APPID);
RSA rsa = new RSA();
String secretUserid = rsa.encrypt(null, userid, null, "utf-8", spk, false);
heads.put("userid", secretUserid);
return heads;
}
public String getSPK() {
return SPK;
}
public String getSECRET() {
return SECRET;
}
}
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment