|
|
@@ -32,11 +32,29 @@ import java.util.regex.Pattern;
|
|
|
@Slf4j
|
|
|
public class HttpXmlUtil {
|
|
|
|
|
|
- public final static OkHttpClient client = new OkHttpClient.Builder()
|
|
|
- .connectTimeout(120, TimeUnit.SECONDS)
|
|
|
- .writeTimeout(120, TimeUnit.SECONDS)
|
|
|
- .readTimeout(120, TimeUnit.SECONDS)
|
|
|
- .build();
|
|
|
+// public final static OkHttpClient client = new OkHttpClient.Builder()
|
|
|
+// .connectTimeout(120, TimeUnit.SECONDS)
|
|
|
+// .writeTimeout(120, TimeUnit.SECONDS)
|
|
|
+// .readTimeout(120, TimeUnit.SECONDS)
|
|
|
+// .build();
|
|
|
+
|
|
|
+ private static OkHttpClient client;
|
|
|
+
|
|
|
+
|
|
|
+ private static OkHttpClient getInstance() {
|
|
|
+ if (client == null) {
|
|
|
+ synchronized (OkHttpClient.class) {
|
|
|
+ if (client == null) {
|
|
|
+ client = new OkHttpClient.Builder()
|
|
|
+ .connectTimeout(120, TimeUnit.SECONDS)
|
|
|
+ .writeTimeout(120, TimeUnit.SECONDS)
|
|
|
+ .readTimeout(120, TimeUnit.SECONDS)
|
|
|
+ .build();
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+ return client;
|
|
|
+ }
|
|
|
|
|
|
|
|
|
|
|
|
@@ -101,73 +119,6 @@ public class HttpXmlUtil {
|
|
|
}
|
|
|
|
|
|
|
|
|
-// /**
|
|
|
-// * 发送xml请求到server端
|
|
|
-// *
|
|
|
-// * @param url xml请求数据地址
|
|
|
-// * @param xmlString 发送的xml数据流
|
|
|
-// * @return map key:requestData key:responseData
|
|
|
-// */
|
|
|
-// public static InsApiLog sendXmlPost(String url, String xmlString) {
|
|
|
-//
|
|
|
-// System.out.println("请求参数=" + xmlString);
|
|
|
-// log.debug("XML请求url:{},请求参数:{}", url, xmlString);
|
|
|
-// InsApiLog lon = new InsApiLog();
|
|
|
-//
|
|
|
-// lon.setUrl(url);
|
|
|
-// lon.setRequestData(xmlString);
|
|
|
-// Response response = null;
|
|
|
-// String responseString = null;
|
|
|
-// try {
|
|
|
-//
|
|
|
-// OkHttpClient client = new OkHttpClient.Builder()
|
|
|
-// .connectTimeout(60, TimeUnit.SECONDS)
|
|
|
-// .writeTimeout(60, TimeUnit.SECONDS)
|
|
|
-// .readTimeout(60, TimeUnit.SECONDS)
|
|
|
-// .build();
|
|
|
-//
|
|
|
-// MediaType mediaType = MediaType.parse("text/xml");
|
|
|
-// RequestBody body = RequestBody.create(mediaType, xmlString);
|
|
|
-// Request request = new Request.Builder()
|
|
|
-// .url(url)
|
|
|
-// .post(body)
|
|
|
-// .addHeader("Content-Type", "text/xml")
|
|
|
-// .addHeader("cache-control", "no-cache")
|
|
|
-// .build();
|
|
|
-//
|
|
|
-// response = client.newCall(request).execute();
|
|
|
-// if (response.isSuccessful()) {
|
|
|
-// responseString = response.body().string();
|
|
|
-// }
|
|
|
-// } catch (Exception e) {
|
|
|
-// e.printStackTrace();
|
|
|
-// lon.setExceptionMsg(e.getMessage());
|
|
|
-// return lon;
|
|
|
-// } finally {
|
|
|
-// System.out.println("返回参数=" + responseString);
|
|
|
-// response.close();
|
|
|
-// log.debug("XML返回url:{},响应参数:{}", url, responseString);
|
|
|
-// }
|
|
|
-//
|
|
|
-//
|
|
|
-// String[] patterns = new String[]{
|
|
|
-// // This will remove empty elements that look like <ElementName/>
|
|
|
-// "\\s*<\\w+/>",
|
|
|
-// // This will remove empty elements that look like <ElementName></ElementName>
|
|
|
-// "\\s*<\\w+></\\w+>",
|
|
|
-// // This will remove empty elements that look like
|
|
|
-// // <ElementName>
|
|
|
-// // </ElementName>
|
|
|
-// "\\s*<\\w+>\n*\\s*</\\w+>"
|
|
|
-// };
|
|
|
-// for (String pattern : patterns) {
|
|
|
-// Matcher matcher = Pattern.compile(pattern).matcher(responseString);
|
|
|
-// responseString = matcher.replaceAll("");
|
|
|
-// }
|
|
|
-//
|
|
|
-// lon.setResponseData(responseString);
|
|
|
-// return lon;
|
|
|
-// }
|
|
|
|
|
|
|
|
|
/**
|
|
|
@@ -185,32 +136,32 @@ public class HttpXmlUtil {
|
|
|
String responseString = null;
|
|
|
// Response response = new Response.Builder().addHeader("Connection", "close").build();
|
|
|
Response response = null;
|
|
|
- Call call = null;
|
|
|
try {
|
|
|
|
|
|
|
|
|
-
|
|
|
MediaType mediaType = MediaType.parse("text/xml");
|
|
|
- RequestBody body = RequestBody.create(mediaType, xmlString);
|
|
|
+ RequestBody reqBody = RequestBody.create(mediaType, xmlString);
|
|
|
Request request = new Request.Builder()
|
|
|
.url(url)
|
|
|
- .post(body)
|
|
|
+ .post(reqBody)
|
|
|
.addHeader("Content-Type", "text/xml")
|
|
|
.addHeader("cache-control", "no-cache")
|
|
|
// .addHeader("Connection", "close")
|
|
|
.build();
|
|
|
|
|
|
- call = client.newCall(request);
|
|
|
- response = call.execute();
|
|
|
- if (response.isSuccessful()) {
|
|
|
- responseString = response.body().string();
|
|
|
+ response = getInstance().newCall(request).execute();
|
|
|
+ ResponseBody respBody = response.body();
|
|
|
+ if (respBody != null) {
|
|
|
+ if (response.isSuccessful()) {
|
|
|
+ responseString = response.body().string();
|
|
|
+ }
|
|
|
+ } else {
|
|
|
+ log.error(textHead + "请求返回null");
|
|
|
}
|
|
|
|
|
|
- client.dispatcher().executorService().shutdown();
|
|
|
|
|
|
} catch (Exception e) {
|
|
|
- e.printStackTrace();
|
|
|
- log.error(textHead + "请求异常:" + e.getMessage() + ",原始返回:" + response);
|
|
|
+ log.error(textHead + "请求异常:" + e.getMessage() + ",异常信息:" + e);
|
|
|
e.printStackTrace();
|
|
|
throw new SystemException("远程接口请求失败,请联系管理员。");
|
|
|
} finally {
|
|
|
@@ -220,7 +171,6 @@ public class HttpXmlUtil {
|
|
|
log.debug(textHead + "XML返回url:{},\n响应参数:{}", url, responseStringMsg);
|
|
|
|
|
|
response.close();
|
|
|
- call.cancel();
|
|
|
}
|
|
|
|
|
|
return responseString;
|