EKP jd 上传附件(四) soap+xml
一. jd Demo
package com.landray.kmss.gemdale.webservice;
import java.io.IOException;
import java.io.InputStream;
import java.nio.charset.Charset;
import java.nio.file.Files;
import java.nio.file.Paths;
import java.io.FileInputStream;
import java.text.SimpleDateFormat;
import java.util.Date;
import org.apache.commons.codec.binary.Base64;
import org.apache.http.HttpEntity;
import org.apache.http.client.ClientProtocolException;
import org.apache.http.client.config.RequestConfig;
import org.apache.http.client.methods.CloseableHttpResponse;
import org.apache.http.client.methods.HttpPost;
import org.apache.http.impl.client.CloseableHttpClient;
import org.apache.http.impl.client.HttpClientBuilder;
import org.apache.http.util.EntityUtils;
import org.apache.http.entity.StringEntity;
public class WebServiceTest {
private static String url = "http://:8080/sys/webservice/commonWorkflowService?wsdl";
private static String localUrl = "http://localhost:8080/sys/webservice/commonWorkflowService?wsdl";
private static String targetNamespace = "http:///";
public static void main(String[] args) throws IOException {
ICommonWorkflowService webService = new ICommonWorkflowServiceProxy(url);
// String fd_id = webService.addReview(createForm());
// System.out.println(fd_id);
String result = doPostSoap();
System.out.println(result);
}
public static String doPostSoap() throws IOException,Exception {
//为服务请求方请求服务时服务器运行时间,格式为 YYYYMMDDHHMMSS
Date date = new Date();
SimpleDateFormat sf = new SimpleDateFormat("yyyyMMddHHmmss");
String ServiceTime = sf.format(date); //传入当前时间、
byte[] bytes = file2bytes("F:\\" + "ceshi2.txt");
String fileBase64 = Base64.encodeBase64String(bytes);
String soapXml="<?xml version=\"1.0\" encoding=\"utf-8\"?>\n" +
"<SOAP-ENV:Envelope\n" +
" xmlns:SOAP-ENV=\"http://schemas.xmlsoap.org/soap/envelope/\"\n" +
" xmlns:web=\"http://webservice.gemdale.kmss.landray.com/\">\n" +
" <SOAP-ENV:Header/>\n" +
" <SOAP-ENV:Body>\n" +
" <web:addReview>\n" +
" <arg0>\n" +
" <attachmentForms>\n" +
" <fdKey>"+"fd_file"+"</fdKey>\n" +
" <fdFileName>"+"ceshi2.txt"+"</fdFileName>\n" +
// " <fdAttachment>"+"VGhyb3VnaCB0aGUgZGFya2VzdCBhbGxleXMgYW5kIGxvbmVsaWVzdCB2YWxsZXlz"+"</fdAttachment>\n" +
" <fdAttachment>"+fileBase64+"</fdAttachment>\n" +
" </attachmentForms>\n" +
" <docCreator>admin</docCreator>\n"+
" <docStatus>10</docStatus>\n"+
" <docSubject>"+ServiceTime+"_add"+"</docSubject>\n"+
" <fdTemplateKeyword>SGSY-XQ</fdTemplateKeyword>\n"+
" </arg0>\n" +
" </web:addReview>\n" +
" </SOAP-ENV:Body>\n" +
"</SOAP-ENV:Envelope>\n" +
"";
int socketTimeout = 10000;// 请求超时时间
int connectTimeout = 10000;// 传输超时时间
final String soap = "text/xml;charset=UTF-8";
// 创建HttpClient
HttpClientBuilder httpClientBuilder = HttpClientBuilder.create();
CloseableHttpClient closeableHttpClient = httpClientBuilder.build();
// 创建Post请求
HttpPost httpPost = new HttpPost(localUrl);
// 设置请求和传输超时时间
RequestConfig requestConfig = RequestConfig.custom().setSocketTimeout(socketTimeout)
.setConnectTimeout(connectTimeout).build();
httpPost.setConfig(requestConfig);
// 设置Post请求报文头部
httpPost.setHeader("Content-Type", soap);
httpPost.setHeader("SOAPAction", "");
// 添加报文内容
StringEntity data = new StringEntity(soapXml, Charset.forName("UTF-8"));
httpPost.setEntity(data);
try {
// 执行请求获取返回报文
CloseableHttpResponse response = closeableHttpClient.execute(httpPost);
HttpEntity httpEntity = response.getEntity();
if (httpEntity != null) {
// 打印响应内容
return EntityUtils.toString(httpEntity, "UTF-8");
}
// 释放资源
closeableHttpClient.close();
} catch (ClientProtocolException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
return null;
}
/*
* 创建流程文档
*/
public static ReviewHandlerParamter createForm() throws IOException {
ReviewHandlerParamter reviewHandlerParamter = new ReviewHandlerParamter();
// 本地环境模板
reviewHandlerParamter.setFdTemplateKeyword("SGSY-XQ");
SimpleDateFormat df = new SimpleDateFormat("yyyy-MM-dd HH:mm");
reviewHandlerParamter.setDocSubject(df.format(new Date()) + " add 附件上传");
reviewHandlerParamter.setDocCreator("admin");
AttachmentForm[] attForms = createAllAtts();
reviewHandlerParamter.setAttachmentForms(attForms);
return reviewHandlerParamter;
}
/*
* 创建附件列表
*/
static AttachmentForm[] createAllAtts() throws IOException {
AttachmentForm[] attForms = new AttachmentForm[3];
String fileName = "TEST1.rtf";
AttachmentForm attForm01 = createAtt(fileName);
attForms[0] = attForm01;
return attForms;
}
/*
* 创建附件对象
*/
static AttachmentForm createAtt(String fileName) throws IOException {
AttachmentForm attForm = new AttachmentForm();
attForm.setFdFileName(fileName); // 设置附件关键字,表单模式下为附件控件的id
attForm.setFdKey("fd_file");
byte[] data = file2bytes("F:\\" + "FILE-10-35-21-34-6333872054413443-1623835937850.rtf");
attForm.setFdAttachment(data);
return attForm;
}
/*
* 将文件转换为字节编码
*/
static byte[] file2bytes(String fileName) throws IOException {
InputStream in = new FileInputStream(fileName);
byte[] data = new byte[in.available()];
try {
in.read(data);
} finally {
try {
in.close();
} catch (IOException ex) {
}
}
return data;
}
}
二. ny Demo
package com.landray.kmss.sec.org.util;
import java.io.IOException;
import java.nio.charset.Charset;
import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.Date;
import java.util.List;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
import org.apache.commons.lang.StringEscapeUtils;
import org.apache.http.HttpEntity;
import org.apache.http.client.ClientProtocolException;
import org.apache.http.client.config.RequestConfig;
import org.apache.http.client.methods.CloseableHttpResponse;
import org.apache.http.client.methods.HttpPost;
import org.apache.http.entity.StringEntity;
import org.apache.http.impl.client.CloseableHttpClient;
import org.apache.http.impl.client.HttpClientBuilder;
import org.apache.http.util.EntityUtils;
import com.alibaba.fastjson.JSONObject;
import com.landray.kmss.util.StringUtil;
/**
* 模块基础工具类
*/
public class SecOrgPushUtil{
/**
* 同步HttpPost请求发送SOAP格式的消息
*
* @param webServiceURL
* WebService接口地址
* @param soapXml
* 消息体
* @param soapAction
* soapAction
* @param soapType
* soap版本
* @return
*/
static int socketTimeout = 10000;// 请求超时时间
static int connectTimeout = 10000;// 传输超时时间
static final String soap = "text/xml;charset=UTF-8";
public static String doPostSoap(String webServiceURL, String soapXml,String soapAction) {
// 创建HttpClient
HttpClientBuilder httpClientBuilder = HttpClientBuilder.create();
CloseableHttpClient closeableHttpClient = httpClientBuilder.build();
// 创建Post请求
HttpPost httpPost = new HttpPost(webServiceURL);
// 设置请求和传输超时时间
RequestConfig requestConfig = RequestConfig.custom()
.setSocketTimeout(socketTimeout)
.setConnectTimeout(connectTimeout).build();
httpPost.setConfig(requestConfig);
// 设置Post请求报文头部
httpPost.setHeader("Content-Type", soap);
httpPost.setHeader("SOAPAction", soapAction);
// 添加报文内容
StringEntity data = new StringEntity(soapXml, Charset.forName("UTF-8"));
httpPost.setEntity(data);
try {
// 执行请求获取返回报文
CloseableHttpResponse response = closeableHttpClient.execute(httpPost);
HttpEntity httpEntity = response.getEntity();
if (httpEntity != null) {
// 打印响应内容
return EntityUtils.toString(httpEntity, "UTF-8");
}
// 释放资源
closeableHttpClient.close();
} catch (ClientProtocolException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
return null;
}
//截取<Response>(.*)</Response>
public static JSONObject unResponseXml(String str) {
JSONObject jsonGroup = new JSONObject();
String regex = "<Response>(.*)</Response>";
Pattern pattern = Pattern.compile(regex);
Matcher matcher = pattern.matcher(str);//匹配类
while (matcher.find()) {
String group = matcher.group(1);
group = StringEscapeUtils.unescapeXml(group);
if(StringUtil.isNotNull(group)) {
jsonGroup = JSONObject.parseObject(group);
}
}
return jsonGroup;
}
//利用List的contains方法循环遍历,重新排序,只添加一次数据,避免重复:
private static List<String> removeDuplicate(List<String> list) {
List<String> result = new ArrayList<String>(list.size());
for (String str : list) {
if (!result.contains(str)) {
result.add(str);
}
}
list.clear();
list.addAll(result);
return result;
}
}
推送接口
/**
* 调用推送接口
* @param jsonAll
* @param SourceSysID
* @param jsonAll
* @param ServiceID
* @param SerialNO
* @param configLink
* @return
*/
public String pushJsonData(JSONObject jsonAll, String SourceSysID, String ServiceID, String SerialNO, String configLink) {
String result = "";
try {
//为服务请求方请求服务时服务器运行时间,格式为 YYYYMMDDHHMMSS
Date date = new Date();
SimpleDateFormat sf = new SimpleDateFormat("yyyyMMddHHmmss");
String ServiceTime = sf.format(date); //传入当前时间
String soapXml="<?xml version=\"1.0\" encoding=\"utf-8\"?>\n" +
"<SOAP-ENV:Envelope\n" +
" xmlns:SOAP-ENV=\"http://schemas.xmlsoap.org/soap/envelope/\"\n" +
" xmlns:impl=\"http://smile.web.com/webservice\">\n" +
" <SOAP-ENV:Header/>\n" +
" <SOAP-ENV:Body>\n" +
" <impl:esbServiceOperation>\n" +
" <arg0>\n" +
" <Service>\n" +
" <Route>\n" +
" <ServiceID>"+ServiceID+"</ServiceID>\n" +
" <SerialNO>"+SerialNO+"</SerialNO>\n" +
" <ServiceTime>"+ServiceTime+"</ServiceTime>\n" +
" <SourceSysID>"+SourceSysID+"</SourceSysID>\n" +
" </Route>\n" +
" <Data>\n" +
" <Request>"+jsonAll+"</Request>\n" +
" <Control/>\n" +
" </Data>\n" +
" </Service>\n" +
" </arg0>\n" +
" </impl:esbServiceOperation>\n" +
" </SOAP-ENV:Body>\n" +
"</SOAP-ENV:Envelope>\n" +
"";
//result= doPostSoap("http://10.62.16.56:7080/ESBWS/services/RequestInPort", soapXml, "", soap);
result= SecOrgPushUtil.doPostSoap(configLink, soapXml, "");
//result= "<soapenv:Envelope xmlns:soapenv=\"http://schemas.xmlsoap.org/soap/envelope/\"><soapenv:Body><impl:esbServiceOperationResponse xmlns:impl=\"http://impl.webservice.eis.com/\"><return><Service><Route><ServiceID>10000000000001</ServiceID><SerialNO>202203230100000001</SerialNO><ServiceTime>20220323090756</ServiceTime><SourceSysID>0100</SourceSysID><ServiceResponse><Status>COMPLETE</Status><Code>S000M000</Code><Desc>通信正常完成</Desc></ServiceResponse></Route><Data><Request>{"sourceSysId":"0100","dataType":"40000001","data":{"f_sjzzbm_cq":"1","f_sjzzbm_xz":"1","f_zczb":"475738.99","f_clrq":"1993-08-21","f_zzzjm":"SZNYJT","f_zzyh":[{"f_bzmc":"CNY","f_yhmc":"1","f_zhmc":"zs2022","f_zhlx":"1","f_bzbm":"CNY","f_yhhh":"1234500","f_zhhm":"zs1980"}],"f_sfstdw":"1","f_tgt_sys":"","f_bmxx":[{"f_name":"信息部","f_bmcj":"01","f_code":"nyjt2022","f_bmlx":"1","f_sjbmmc":"1","f_sjbmbm":"1","f_bmjc":"XXB"}],"f_ename":"SZNYJTYSGS","f_sjzzmc_xz":"组织1","f_jyfw":"中国大陆","f_zcbzbm":"CNY","f_zzcj_cq":"1","f_code":"SE0000000","f_dqrq":"2043-08-21","f_ssywbk":"FD","f_zzjc":"深圳能源集团","f_sjzzmc_cq":"组织1","f_zzcj_xz":"01","f_gj":"CHN","f_name":"深圳能源集团股份有限公司","f_id":"17fb44b6bdfc92dcb03cb544be0a732e","f_jwzjbm":"nyjt","f_zcdz":"深圳市福田区福田街道金田路2026号能源大厦北塔楼9层、29-31层、34-41层","f_qyfr":"王平洋","f_zcbzmc":"人民币元","f_sf":"2","f_zzlx":"1","f_jthjcgbl":"20.0","f_zzxz":"1","f_tyshxydm":"91440300192241158P","f_zzzt":"1"},"msgId":"202203230100000001"}</Request><Response>{"msg":"","code":"0","data":[{"f_code":"SE0000000","f_id":"17fb44b6bdfc92dcb03cb544be0a732e","f_status":"0"}]}</Response></Data></Service></return></impl:esbServiceOperationResponse></soapenv:Body></soapenv:Envelope>";
} catch (Exception e) {
e.printStackTrace();
}
return result;
}
<soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/">
<soap:Body><ns1:addReviewResponse xmlns:ns1="http://webservice.gemdale.kmss.landray.com/">
<return>{"processId":"1847b4939130dd0a06ac5e8426ba388f","code":1,"success":true,"message":"流程成功启动"}</return>
</ns1:addReviewResponse>
</soap:Body></soap:Envelope>

浙公网安备 33010602011771号