You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

276 lines
9.5 KiB
Java

This file contains ambiguous Unicode characters!

This file contains ambiguous Unicode characters that may be confused with others in your current locale. If your use case is intentional and legitimate, you can safely ignore this warning. Use the Escape button to highlight these characters.

package com.docus.bgts.utils;
import com.alibaba.fastjson.JSON;
import org.apache.http.HttpEntity;
import org.apache.http.NameValuePair;
import org.apache.http.client.ClientProtocolException;
import org.apache.http.client.entity.UrlEncodedFormEntity;
import org.apache.http.client.methods.*;
import org.apache.http.client.utils.URIBuilder;
import org.apache.http.entity.ContentType;
import org.apache.http.entity.StringEntity;
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.EntityUtils;
import org.dom4j.Document;
import org.dom4j.Element;
import java.io.IOException;
import java.io.UnsupportedEncodingException;
import java.net.URISyntaxException;
import java.util.ArrayList;
import java.util.Map;
public class HttpUtils {
private static PoolingHttpClientConnectionManager cm;
private static String EMPTY_STR = "";
private static String UTF_8 = "UTF-8";
private static void init() {
if (cm == null) {
cm = new PoolingHttpClientConnectionManager();
cm.setMaxTotal(50);// 整个连接池最大连接数
cm.setDefaultMaxPerRoute(5);// 每路由最大连接数默认值是2
}
}
/**
* 通过连接池获取HttpClient
*
* @return
*/
private static CloseableHttpClient getHttpClient() {
init();
return HttpClients.custom().setConnectionManager(cm).build();
}
/**
* @param url
* @return
*/
public static String get(String url) {
HttpGet httpGet = new HttpGet(url);
return getResult(httpGet);
}
/**
* @param url、params
* @return
*/
public static String get(String url, Map<String, String > params) throws URISyntaxException {
URIBuilder ub = new URIBuilder();
ub.setPath(url);
ArrayList<NameValuePair> pairs = covertParams2NVPS(params);
ub.setParameters(pairs);
HttpGet httpGet = new HttpGet(ub.build());
return getResult(httpGet);
}
/**
* @param url、headers、params
* @return
*/
public static String get(String url, Map<String, Object> headers, Map<String, String> params)
throws URISyntaxException {
URIBuilder ub = new URIBuilder();
ub.setPath(url);
if (params != null) {
ArrayList<NameValuePair> pairs = covertParams2NVPS(params);
ub.setParameters(pairs);
}
HttpGet httpGet = new HttpGet(ub.build());
for (Map.Entry<String, Object> param : headers.entrySet()) {
httpGet.addHeader(param.getKey(), String.valueOf(param.getValue()));
}
return getResult(httpGet);
}
/**
* @param url
* @return
*/
public static String post(String url) {
HttpPost httpPost = new HttpPost(url);
return getResult(httpPost);
}
/**
* @param url、params
* @return
*/
public static String post(String url, Map<String, String> params) throws UnsupportedEncodingException {
HttpPost httpPost = new HttpPost(url);
httpPost.setEntity(new UrlEncodedFormEntity(covertParams2NVPS(params), "utf-8"));//设置表单提交编码
// httpPost.setEntity(new StringEntity(JSON.toJSONString(params), ContentType.APPLICATION_FORM_URLENCODED));
return getResult(httpPost);
}
public static String post(String url, Object params, Map<String, Object> head) throws UnsupportedEncodingException {
HttpPost httpPost = new HttpPost(url);
System.out.println(params);
httpPost.setEntity(new StringEntity(params.toString()));//设置表单提交编码
if (params != null) {
for (Map.Entry<String, Object> param : head.entrySet()) {
httpPost.addHeader(param.getKey(), String.valueOf(param.getValue()));
}
}
// httpPost.setEntity(new StringEntity(JSON.toJSONString(params), ContentType.APPLICATION_FORM_URLENCODED));
return getResult(httpPost);
}
private static ArrayList<NameValuePair> covertParams2NVPS(Map<String, String> params) {
ArrayList<NameValuePair> pairs = new ArrayList<NameValuePair>();
for (Map.Entry<String, String> param : params.entrySet()) {
if (param.getValue() != null) {
pairs.add(new BasicNameValuePair(param.getKey(), param.getValue()));
}
}
return pairs;
}
/**
* @param url、headers、params
* @return
*/
public static String post(String url, Map<String, Object> headers, Map<String, Object> params)
throws UnsupportedEncodingException {
HttpPost httpPost = new HttpPost(url);
System.out.println(params);
if (params != null) {
for (Map.Entry<String, Object> param : headers.entrySet()) {
httpPost.addHeader(param.getKey(), String.valueOf(param.getValue()));
}
}
httpPost.setEntity(new StringEntity(JSON.toJSONString(params), ContentType.APPLICATION_JSON));
return getResult(httpPost);
}
/**
* 处理Http请求
*
* @param request
* @return
*/
private static String getResult(HttpRequestBase request) {
// CloseableHttpClient httpClient = HttpClients.createDefault();
CloseableHttpClient httpClient = getHttpClient();
try {
CloseableHttpResponse response = httpClient.execute(request);
// response.getStatusLine().getStatusCode();
HttpEntity entity = response.getEntity();
if (entity != null) {
// long len = entity.getContentLength();// -1 表示长度未知
String result = EntityUtils.toString(entity, UTF_8);
response.close();
// httpClient.close();
return result;
}
} catch (ClientProtocolException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
} finally {
}
return EMPTY_STR;
}
/**
* 处理Http请求
*
* @param requestBuilder
* @return
*/
private static String getResult(RequestBuilder requestBuilder) {
// CloseableHttpClient httpClient = HttpClients.createDefault();
CloseableHttpClient httpClient = getHttpClient();
try {
CloseableHttpResponse response = httpClient.execute(requestBuilder.build());
// response.getStatusLine().getStatusCode();
HttpEntity entity = response.getEntity();
if (entity != null) {
// long len = entity.getContentLength();// -1 表示长度未知
String result = EntityUtils.toString(entity, UTF_8);
response.close();
// httpClient.close();
return result;
}
} catch (ClientProtocolException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
} finally {
}
return EMPTY_STR;
}
/**
* 第三方入参xml
* @return
*/
public static Element reqElement(Document document,Integer code){
//获取根节点
Element esbEntry = document.addElement("ESBEntry");
Element accessControl = esbEntry.addElement("AccessControl");
accessControl.addElement("SysFlag").setText("1");
accessControl.addElement("UserName").setText("WZHBAGL");
accessControl.addElement("Password").setText("WZHBAGL_1127");
accessControl.addElement("Fid").setText("BS04102");
accessControl.addElement("OrderNo").setText("BS04102S51001");
accessControl.addElement("SUBOR_HOSPITAL_DISTRICT").setText("GZ");
Element messageHeader = esbEntry.addElement("MessageHeader");
messageHeader.addElement("Fid").setText("BS04102");
messageHeader.addElement("OrderNo").setText("BS04102S51001");
messageHeader.addElement("SourceSysCode").setText("S51");
messageHeader.addElement("TargetSysCode").setText("S00");
messageHeader.addElement("MsgDate").setText("2021-10-27 17:05:19");
Element requestOption = esbEntry.addElement("RequestOption");
requestOption.addElement("triggerData").setText("0");
requestOption.addElement("dataAmount").setText("500");
/*
* 主要参数部分开始
*/
Element msgInfo = esbEntry.addElement("MsgInfo");
msgInfo.addAttribute("flag","1");
msgInfo.addElement("Msg");
Element distinct = msgInfo.addElement("distinct");
distinct.addAttribute("value","0");
Element query = msgInfo.addElement("query");
query.addAttribute("item","WS_INPUT");
query.addAttribute("compy"," = ");
query.addAttribute("value"," 1 ");
query.addAttribute("splice","AND");
Element queryWs = msgInfo.addElement("query_ws");
if(code==1){
queryWs.addAttribute("action","queueReportList");
}else {
queryWs.addAttribute("action","queueReportInfo");
}
Element res = queryWs.addElement("content").addElement("Request").addElement("Msg");
/*
* 主要参数部分结束
*/
Element groupInfo = esbEntry.addElement("GroupInfo");
groupInfo.addAttribute("flag","0");
Element as = groupInfo.addElement("AS");
as.addAttribute("ID","");
as.addAttribute("linkField","");
return res;
}
}