-
Notifications
You must be signed in to change notification settings - Fork 0
/
UFConnectionUtil.java
142 lines (132 loc) · 4.65 KB
/
UFConnectionUtil.java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
package cn.digitalpublishing.ufinterface;
import java.io.BufferedOutputStream;
import java.io.FileNotFoundException;
import java.io.IOException;
import java.io.InputStream;
import java.net.HttpURLConnection;
import java.net.URL;
import java.util.ArrayList;
import java.util.List;
import java.util.Map;
import java.util.Properties;
import org.codehaus.jackson.map.ObjectMapper;
import org.jdom.Document;
import org.jdom.Element;
import org.jdom.input.SAXBuilder;
import uk.ltd.getahead.dwr.util.Logger;
import cn.com.daxtech.framework.exception.CcsException;
/**
* 用友接口连接工具类
* @author liminghao
*/
public class UFConnectionUtil {
public static final Logger log = Logger.getLogger(UFConnectionUtil.class);
private static final String ACCOUNT = "01";
private static final String RECEIVER = "FLZS";
private static final String BASE_URL = getProperties().get("url").toString();
private static final String URL = BASE_URL + "?account="+ACCOUNT+"&receiver="+RECEIVER;
/**
* 上传文件方法
* @param xmlStr
* @throws Exception
*/
public static void uploadFile(String xmlStr) throws Exception {
try {
log.info("uploadFile.URL: " + URL);
URL realURL = new URL(URL);
HttpURLConnection connection = (HttpURLConnection) realURL.openConnection();
connection.setDoOutput(true);
connection.setDoInput(true);
connection.setRequestProperty("Content-Type", "text/html");
connection.setRequestMethod("POST");
BufferedOutputStream out = new BufferedOutputStream(connection.getOutputStream()); // URL连接输出流
out.write(xmlStr.getBytes());
out.close();
ArrayList<LogVO> resultLists = getStringResult(connection);
for (int i = 0; i < resultLists.size(); i++) {
LogVO vo = (LogVO) resultLists.get(i);
// System.out.println("*****************************************************");
// System.out.println("主键:" + vo.getBdocid());
// System.out.println("文件名:" + vo.getFilename());
// System.out.println("导入结果标志:" + vo.getResultcode());
// System.out.println("反馈信息:" + vo.getResultdescription());
// System.out.println("生成的凭证信息:" + vo.getContent());
// System.out.println("*****************************************************");
log.info("UFConnectionUtil.uploadFile.result: " + new ObjectMapper().writeValueAsString(vo));
}
// 关闭连接
connection.disconnect();
log.info("ufinterface.UFConnectionUtil.uploadFile.success");
} catch (Exception e) {
log.error("ufinterface.UFConnectionUtil.error"+ e);
throw new CcsException((e instanceof CcsException) ? ((CcsException) e).getPrompt() : "ufinterface.UFConnectionUtil.error", e);
}
}
@SuppressWarnings("unchecked")
public static ArrayList<LogVO> getStringResult(HttpURLConnection connection) throws Exception {
InputStream inputStream = null;
// 存放日志结果的集合
ArrayList<LogVO> resultLists = new ArrayList<LogVO>();
try {
if (connection != null) {
inputStream = connection.getInputStream();
// 将获取的数据流转换为Document
SAXBuilder builder = new SAXBuilder();
Document d = builder.build(inputStream);
// 解析该Document
Element root = d.getRootElement();
List<Element> list = root.getChildren();
for (Element element : list) {
LogVO vo = new LogVO();
List<Element> tmpList = element.getChildren();
for (Element tmp : tmpList) {
if ("bdocid".equals(tmp.getName())) {
vo.setBdocid(tmp.getValue());
} else if ("filename".equals(tmp.getName())) {
vo.setFilename(tmp.getValue());
} else if ("resultcode".equals(tmp.getName())) {
vo.setResultcode(tmp.getValue());
} else if ("resultdescription".equals(tmp.getName())) {
vo.setResultdescription(tmp.getValue());
} else if ("content".equals(tmp.getName())) {
vo.setContent(tmp.getValue());
}
}
resultLists.add(vo);
}
}
} catch (Exception e) {
log.error("无法读取数据流: " + e);
throw new Exception("无法读取数据流.", e);
} finally {
try {
if (inputStream != null) {
inputStream.close();
}
} catch (Exception e) {
e.printStackTrace();
}
}
return resultLists;
}
@SuppressWarnings("rawtypes")
public static Map getProperties() {
Properties prop = new Properties();
InputStream inputFile = null;
try {
inputFile = UFConnectionUtil.class.getResourceAsStream("/ufinterface.properties");
prop.load(inputFile);
} catch (FileNotFoundException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
} finally {
try {
inputFile.close();
} catch (IOException e) {
e.printStackTrace();
}
}
return (Map) prop;
}
}