Compare commits
7 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
9f6314c9e9 | ||
|
|
27f941768a | ||
|
|
63ae9e7433 | ||
|
|
2d242988e1 | ||
|
|
c976264581 | ||
|
|
b7c068e1ae | ||
|
|
b43a94f006 |
@@ -5,7 +5,7 @@
|
|||||||
<meta charset='UTF-8'>
|
<meta charset='UTF-8'>
|
||||||
<meta http-equiv='X-UA-Compatible' content='IE=edge'>
|
<meta http-equiv='X-UA-Compatible' content='IE=edge'>
|
||||||
<meta name='viewport' content='width=device-width, initial-scale=1.0'>
|
<meta name='viewport' content='width=device-width, initial-scale=1.0'>
|
||||||
<title>顺诚百宝箱</title>
|
<title>支付测试- 顺诚百宝箱</title>
|
||||||
<style>
|
<style>
|
||||||
* {
|
* {
|
||||||
margin: 10px auto;
|
margin: 10px auto;
|
||||||
@@ -39,7 +39,7 @@
|
|||||||
}
|
}
|
||||||
|
|
||||||
let response = await fetch('/pay/createOrder?n=' + n + '&t=test');
|
let response = await fetch('/pay/createOrder?n=' + n + '&t=test');
|
||||||
let res = eval("(" + await response.text() + ")");
|
let res = JSON.parse(await response.text());
|
||||||
|
|
||||||
if (res.code == 1) {
|
if (res.code == 1) {
|
||||||
|
|
||||||
@@ -54,7 +54,7 @@
|
|||||||
alert('获取二维码失败');
|
alert('获取二维码失败');
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
$('.imgs').html("<img src='data:image/jpg;base64," + img + "'><br><a href='" + code + "'>手机点这里打开支付宝APP</a><br>使用支付宝扫一扫<br><button onclick='selectPay(" + id + ")'>查询支付状态</button> <button onclick='getPayQr()'>刷新二维码</button>");
|
$('.imgs').html("<img src='data:image/jpg;base64," + img + "'><br><a href='alipays://platformapi/startapp?saId=10000007&qrcode=" + code + "'>手机点这里打开支付宝APP</a><br>使用支付宝扫一扫<br><button onclick='selectPay(" + id + ")'>查询支付状态</button> <button onclick='getPayQr()'>刷新二维码</button>");
|
||||||
subscribe(id);
|
subscribe(id);
|
||||||
|
|
||||||
} else alert('遇到错误 ' + res.msg);
|
} else alert('遇到错误 ' + res.msg);
|
||||||
@@ -77,7 +77,7 @@
|
|||||||
await subscribe(id);
|
await subscribe(id);
|
||||||
} else {
|
} else {
|
||||||
// 获取并显示消息
|
// 获取并显示消息
|
||||||
let message = eval("(" + await response.text() + ")");
|
let message = JSON.parse(await response.text());
|
||||||
|
|
||||||
// 再次调用 subscribe() 以获取下一条消息
|
// 再次调用 subscribe() 以获取下一条消息
|
||||||
if (message.msg == "已支付") {
|
if (message.msg == "已支付") {
|
||||||
@@ -94,7 +94,7 @@
|
|||||||
*/
|
*/
|
||||||
async function selectPay(id) {
|
async function selectPay(id) {
|
||||||
let response = await fetch('/pay/queryPay?id=' + id);
|
let response = await fetch('/pay/queryPay?id=' + id);
|
||||||
let res = eval("(" + await response.text() + ")");
|
let res = JSON.parse(await response.text());
|
||||||
|
|
||||||
if (response.status == 200 && res.msg == "已支付") {
|
if (response.status == 200 && res.msg == "已支付") {
|
||||||
return okPay();
|
return okPay();
|
||||||
|
|||||||
@@ -359,7 +359,7 @@ public static String putImg(ServletContext servletContext,MultipartFile file,Str
|
|||||||
saveSql(realurl, towhere,fileName);
|
saveSql(realurl, towhere,fileName);
|
||||||
}
|
}
|
||||||
|
|
||||||
if(servletContext != null) return "/getFile/"+rid;
|
if(servletContext != null) return "/getImg/"+rid;
|
||||||
else return realurl;
|
else return realurl;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -452,7 +452,7 @@ public static String putImgAsName(ServletContext servletContext,MultipartFile fi
|
|||||||
saveSql(realurl, towhere,fileName);
|
saveSql(realurl, towhere,fileName);
|
||||||
}
|
}
|
||||||
|
|
||||||
if(servletContext != null) return "/getFile/"+rid;
|
if(servletContext != null) return "/getImg/"+rid;
|
||||||
else return realurl;
|
else return realurl;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -548,7 +548,7 @@ public static String putVideo(ServletContext servletContext,MultipartFile file,S
|
|||||||
saveSql(realurl, towhere,fileName);
|
saveSql(realurl, towhere,fileName);
|
||||||
}
|
}
|
||||||
|
|
||||||
if(servletContext != null) return "/getFile/"+rid;
|
if(servletContext != null) return "/getImg/"+rid;
|
||||||
else return realurl;
|
else return realurl;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -669,8 +669,8 @@ public static void saveSql(String realurl, String towhere, String saveName) {
|
|||||||
String msid = towhere.split("#")[1];
|
String msid = towhere.split("#")[1];
|
||||||
String mstag = towhere.split("#")[2];
|
String mstag = towhere.split("#")[2];
|
||||||
|
|
||||||
if(realurl.indexOf("/getFile/")==0) {
|
if(realurl.indexOf("/getImg/")==0) {
|
||||||
realurl=realurl.replace("/getFile/", "");
|
realurl=realurl.replace("/getImg/", "");
|
||||||
if(db.execSql("select * from savefile where id = '"+realurl+"'", null)>0){//已存在
|
if(db.execSql("select * from savefile where id = '"+realurl+"'", null)>0){//已存在
|
||||||
db.execUpdate("update savefile set mstab=?,msid=?,mstag=?,savename=? where id=?", new String[]{mstab.trim(),msid.trim(),mstag.trim(),realurl.trim(),saveName==null?"":saveName.trim()});
|
db.execUpdate("update savefile set mstab=?,msid=?,mstag=?,savename=? where id=?", new String[]{mstab.trim(),msid.trim(),mstag.trim(),realurl.trim(),saveName==null?"":saveName.trim()});
|
||||||
}else{//不存在
|
}else{//不存在
|
||||||
@@ -780,8 +780,8 @@ public static void delfile(ServletContext servletContext, String path) {
|
|||||||
if(path.indexOf(":") <= 0)
|
if(path.indexOf(":") <= 0)
|
||||||
path1 = "D:\\" + path;
|
path1 = "D:\\" + path;
|
||||||
} else {
|
} else {
|
||||||
if(path.indexOf("/getFile/")==0){
|
if(path.indexOf("/getImg/")==0){
|
||||||
String rid = path.replace("/getFile/", "");
|
String rid = path.replace("/getImg/", "");
|
||||||
DBUtil db = new DBUtil();
|
DBUtil db = new DBUtil();
|
||||||
List<Map<String, Object>> rs = db.execQuery("select * from savefile where id ="+rid, null);
|
List<Map<String, Object>> rs = db.execQuery("select * from savefile where id ="+rid, null);
|
||||||
if(rs!=null&&rs.size()>0){
|
if(rs!=null&&rs.size()>0){
|
||||||
@@ -828,8 +828,8 @@ public static void delFileForStr(ServletContext servletContext, String str) {
|
|||||||
if(path.indexOf(":") <= 0)
|
if(path.indexOf(":") <= 0)
|
||||||
path1 = "D:\\" + path;
|
path1 = "D:\\" + path;
|
||||||
} else {
|
} else {
|
||||||
if(path.indexOf("/getFile/")==0){
|
if(path.indexOf("/getImg/")==0){
|
||||||
String rid = path.replace("/getFile/", "");
|
String rid = path.replace("/getImg/", "");
|
||||||
List<Map<String, Object>> rs = db.execQuery("select * from savefile where id ="+rid, null);
|
List<Map<String, Object>> rs = db.execQuery("select * from savefile where id ="+rid, null);
|
||||||
if(rs!=null&&rs.size()>0){
|
if(rs!=null&&rs.size()>0){
|
||||||
oldpath=rs.get(0).get("realurl")+"";
|
oldpath=rs.get(0).get("realurl")+"";
|
||||||
@@ -867,8 +867,8 @@ public static void intoSqlForStr(String str,String towhere,String saveName) {
|
|||||||
mstag = towhere.split("#")[2];
|
mstag = towhere.split("#")[2];
|
||||||
|
|
||||||
for (String path : imgs) {
|
for (String path : imgs) {
|
||||||
if(path.indexOf("/getFile/")==0){
|
if(path.indexOf("/getImg/")==0){
|
||||||
String rid = path.replace("/getFile/", "");
|
String rid = path.replace("/getImg/", "");
|
||||||
List<Map<String, Object>> rs = db.execQuery("select * from savefile where id ="+rid, null);
|
List<Map<String, Object>> rs = db.execQuery("select * from savefile where id ="+rid, null);
|
||||||
if(rs!=null&&rs.size()>0){
|
if(rs!=null&&rs.size()>0){
|
||||||
path=rs.get(0).get("realurl")+"";
|
path=rs.get(0).get("realurl")+"";
|
||||||
|
|||||||
657
src/sc545/pay/utils/HttpUtils.java
Normal file
657
src/sc545/pay/utils/HttpUtils.java
Normal file
@@ -0,0 +1,657 @@
|
|||||||
|
package sc545.pay.utils;
|
||||||
|
|
||||||
|
import java.io.IOException;
|
||||||
|
import java.io.UnsupportedEncodingException;
|
||||||
|
import java.security.KeyManagementException;
|
||||||
|
import java.security.KeyStoreException;
|
||||||
|
import java.security.NoSuchAlgorithmException;
|
||||||
|
import java.security.cert.CertificateException;
|
||||||
|
import java.security.cert.X509Certificate;
|
||||||
|
import java.util.ArrayList;
|
||||||
|
import java.util.Iterator;
|
||||||
|
import java.util.List;
|
||||||
|
import java.util.Map;
|
||||||
|
import java.util.Map.Entry;
|
||||||
|
import java.util.Set;
|
||||||
|
import java.util.regex.Matcher;
|
||||||
|
import java.util.regex.Pattern;
|
||||||
|
|
||||||
|
import javax.net.ssl.SSLContext;
|
||||||
|
import javax.net.ssl.TrustManager;
|
||||||
|
import javax.net.ssl.X509TrustManager;
|
||||||
|
|
||||||
|
import org.apache.commons.lang3.StringUtils;
|
||||||
|
import org.apache.http.HttpEntity;
|
||||||
|
import org.apache.http.NameValuePair;
|
||||||
|
import org.apache.http.client.CookieStore;
|
||||||
|
import org.apache.http.client.HttpClient;
|
||||||
|
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.HttpGet;
|
||||||
|
import org.apache.http.client.methods.HttpPost;
|
||||||
|
import org.apache.http.conn.ssl.SSLConnectionSocketFactory;
|
||||||
|
import org.apache.http.entity.StringEntity;
|
||||||
|
import org.apache.http.impl.client.CloseableHttpClient;
|
||||||
|
import org.apache.http.impl.client.HttpClientBuilder;
|
||||||
|
import org.apache.http.impl.client.HttpClients;
|
||||||
|
import org.apache.http.message.BasicNameValuePair;
|
||||||
|
import org.apache.http.ssl.SSLContextBuilder;
|
||||||
|
import org.apache.http.ssl.TrustStrategy;
|
||||||
|
import org.apache.http.util.EntityUtils;
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 基于 httpclient 4.5版本的 http工具类
|
||||||
|
*
|
||||||
|
*
|
||||||
|
*/
|
||||||
|
public class HttpUtils {
|
||||||
|
|
||||||
|
public static final String CHARSET = "UTF-8";
|
||||||
|
|
||||||
|
public static String doGet(String url, Map<String, String> params) {
|
||||||
|
return doGet(url, params, CHARSET);
|
||||||
|
}
|
||||||
|
|
||||||
|
public static String doGetSSL(String url, Map<String, String> params) {
|
||||||
|
return doGetSSL(url, params, CHARSET);
|
||||||
|
}
|
||||||
|
|
||||||
|
public static String doPost(String url, Map<String, String> params){
|
||||||
|
return doPost(url, params, CHARSET);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* HTTP Get 获取内容
|
||||||
|
* @param url 请求的url地址 ?之前的地址
|
||||||
|
* @param params 请求的参数
|
||||||
|
* @param charset 编码格式
|
||||||
|
* @return 页面内容
|
||||||
|
*/
|
||||||
|
public static String doGet(String url, Map<String, String> params, String charset) {
|
||||||
|
if(charset==null||charset.trim().length()<1) charset="UTF-8";
|
||||||
|
if (StringUtils.isBlank(url)) {
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
CloseableHttpResponse response = null;
|
||||||
|
HttpGet httpGet = null;
|
||||||
|
RequestConfig config = RequestConfig.custom().setConnectTimeout(10000).setSocketTimeout(10000).setConnectionRequestTimeout(5000).build();
|
||||||
|
CloseableHttpClient httpClient = HttpClientBuilder.create().setDefaultRequestConfig(config).build();
|
||||||
|
try {
|
||||||
|
if (params != null && !params.isEmpty()) {
|
||||||
|
List<NameValuePair> pairs = new ArrayList<NameValuePair>(params.size());
|
||||||
|
for (Map.Entry<String, String> entry : params.entrySet()) {
|
||||||
|
String value = entry.getValue();
|
||||||
|
if (value != null) {
|
||||||
|
pairs.add(new BasicNameValuePair(entry.getKey(), value));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
// 将请求参数和url进行拼接
|
||||||
|
url += "?" + EntityUtils.toString(new UrlEncodedFormEntity(pairs, charset));
|
||||||
|
}
|
||||||
|
httpGet = new HttpGet(url);
|
||||||
|
response = httpClient.execute(httpGet);
|
||||||
|
int statusCode = response.getStatusLine().getStatusCode();
|
||||||
|
if (statusCode != 200) {
|
||||||
|
httpGet.abort();
|
||||||
|
throw new RuntimeException("HttpClient,error status code :" + statusCode);
|
||||||
|
}
|
||||||
|
HttpEntity entity = response.getEntity();
|
||||||
|
String result = null;
|
||||||
|
if (entity != null) {
|
||||||
|
result = EntityUtils.toString(entity, charset);
|
||||||
|
}
|
||||||
|
EntityUtils.consume(entity);
|
||||||
|
response.close();
|
||||||
|
if(!"UTF-8".equals(getEncoding(result))) result=GBKtoUTF8(result);
|
||||||
|
|
||||||
|
return result;
|
||||||
|
} catch (Exception e) {
|
||||||
|
System.out.println("url错误:::"+e.toString());
|
||||||
|
try {
|
||||||
|
response.close();
|
||||||
|
} catch (IOException e1) {
|
||||||
|
e1.printStackTrace();
|
||||||
|
}
|
||||||
|
e.printStackTrace();
|
||||||
|
}finally{
|
||||||
|
try {
|
||||||
|
response.close();
|
||||||
|
httpClient.close();
|
||||||
|
httpGet.reset();
|
||||||
|
} catch (IOException e) {
|
||||||
|
e.printStackTrace();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* HTTP Post 获取内容
|
||||||
|
* @param url 请求的url地址 ?之前的地址
|
||||||
|
* @param params 请求的参数
|
||||||
|
* @param charset 编码格式
|
||||||
|
* @return 页面内容
|
||||||
|
* @throws IOException
|
||||||
|
*/
|
||||||
|
public static String doPost(String url, Map<String, String> params, String charset) {
|
||||||
|
if(charset==null||charset.trim().length()<1) charset="UTF-8";
|
||||||
|
if (StringUtils.isBlank(url)) {
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
|
||||||
|
List<NameValuePair> pairs = null;
|
||||||
|
if (params != null && !params.isEmpty()) {
|
||||||
|
pairs = new ArrayList<NameValuePair>(params.size());
|
||||||
|
for (Map.Entry<String, String> entry : params.entrySet()) {
|
||||||
|
String value = entry.getValue();
|
||||||
|
if (value != null) {
|
||||||
|
pairs.add(new BasicNameValuePair(entry.getKey(), value));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
HttpPost httpPost = new HttpPost(url);
|
||||||
|
CloseableHttpResponse response = null;
|
||||||
|
RequestConfig config = RequestConfig.custom().setConnectTimeout(10000).setSocketTimeout(10000).setConnectionRequestTimeout(5000).build();
|
||||||
|
CloseableHttpClient httpClient = HttpClientBuilder.create().setDefaultRequestConfig(config).build();
|
||||||
|
try {
|
||||||
|
if (pairs != null && pairs.size() > 0) {
|
||||||
|
httpPost.setEntity(new UrlEncodedFormEntity(pairs, CHARSET));
|
||||||
|
}
|
||||||
|
|
||||||
|
response = httpClient.execute(httpPost);
|
||||||
|
int statusCode = response.getStatusLine().getStatusCode();
|
||||||
|
if (statusCode != 200) {
|
||||||
|
httpPost.abort();
|
||||||
|
throw new RuntimeException("HttpClient,error status code :" + statusCode);
|
||||||
|
}
|
||||||
|
HttpEntity entity = response.getEntity();
|
||||||
|
String result = null;
|
||||||
|
if (entity != null) {
|
||||||
|
result = EntityUtils.toString(entity, charset);
|
||||||
|
}
|
||||||
|
EntityUtils.consume(entity);
|
||||||
|
if(!"UTF-8".equals(getEncoding(result))) result=GBKtoUTF8(result);
|
||||||
|
return result;
|
||||||
|
}catch (Exception e) {
|
||||||
|
System.out.println("url错误:::"+e.toString());
|
||||||
|
e.printStackTrace();
|
||||||
|
}finally{
|
||||||
|
try {
|
||||||
|
response.close();
|
||||||
|
httpClient.close();
|
||||||
|
httpPost.reset();
|
||||||
|
} catch (IOException e) {
|
||||||
|
e.printStackTrace();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* HTTPS Get 获取内容
|
||||||
|
* @param url 请求的url地址 ?之前的地址
|
||||||
|
* @param params 请求的参数
|
||||||
|
* @param charset 编码格式
|
||||||
|
* @return 页面内容
|
||||||
|
*/
|
||||||
|
public static String doGetSSL(String url, Map<String, String> params, String charset) {
|
||||||
|
if(charset==null||charset.trim().length()<1) charset="UTF-8";
|
||||||
|
if (StringUtils.isBlank(url)) {
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
CloseableHttpResponse response = null;
|
||||||
|
HttpGet httpGet = null;
|
||||||
|
CloseableHttpClient httpsClient = null;
|
||||||
|
try {
|
||||||
|
if (params != null && !params.isEmpty()) {
|
||||||
|
List<NameValuePair> pairs = new ArrayList<NameValuePair>(params.size());
|
||||||
|
for (Map.Entry<String, String> entry : params.entrySet()) {
|
||||||
|
String value = entry.getValue();
|
||||||
|
if (value != null) {
|
||||||
|
pairs.add(new BasicNameValuePair(entry.getKey(), value));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
url += "?" + EntityUtils.toString(new UrlEncodedFormEntity(pairs, charset));
|
||||||
|
}
|
||||||
|
httpGet = new HttpGet(url);
|
||||||
|
|
||||||
|
// https 注意这里获取https内容,使用了忽略证书的方式,当然还有其他的方式来获取https内容
|
||||||
|
httpsClient = HttpUtils.createSSLClientDefault();
|
||||||
|
response = httpsClient.execute(httpGet);
|
||||||
|
int statusCode = response.getStatusLine().getStatusCode();
|
||||||
|
if (statusCode != 200) {
|
||||||
|
httpGet.abort();
|
||||||
|
throw new RuntimeException("HttpClient,error status code :" + statusCode);
|
||||||
|
}
|
||||||
|
HttpEntity entity = response.getEntity();
|
||||||
|
String result = null;
|
||||||
|
if (entity != null) {
|
||||||
|
result = EntityUtils.toString(entity, charset);
|
||||||
|
}
|
||||||
|
EntityUtils.consume(entity);
|
||||||
|
response.close();
|
||||||
|
if(!"UTF-8".equals(getEncoding(result))) result=GBKtoUTF8(result);
|
||||||
|
return result;
|
||||||
|
}catch (Exception e) {
|
||||||
|
System.out.println("url错误:::"+e.toString());
|
||||||
|
e.printStackTrace();
|
||||||
|
}finally{
|
||||||
|
try {
|
||||||
|
response.close();
|
||||||
|
httpsClient.close();
|
||||||
|
httpGet.reset();
|
||||||
|
} catch (IOException e) {
|
||||||
|
e.printStackTrace();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 这里创建了忽略整数验证的CloseableHttpClient对象
|
||||||
|
* @return
|
||||||
|
*/
|
||||||
|
public static CloseableHttpClient createSSLClientDefault() {
|
||||||
|
try {
|
||||||
|
SSLContext sslContext = new SSLContextBuilder().loadTrustMaterial(null, new TrustStrategy() {
|
||||||
|
// 信任所有
|
||||||
|
public boolean isTrusted(X509Certificate[] chain, String authType) throws CertificateException {
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
}).build();
|
||||||
|
SSLConnectionSocketFactory sslsf = new SSLConnectionSocketFactory(sslContext);
|
||||||
|
return HttpClients.custom().setSSLSocketFactory(sslsf).build();
|
||||||
|
} catch (KeyManagementException e) {
|
||||||
|
e.printStackTrace();
|
||||||
|
} catch (NoSuchAlgorithmException e) {
|
||||||
|
e.printStackTrace();
|
||||||
|
} catch (KeyStoreException e) {
|
||||||
|
e.printStackTrace();
|
||||||
|
}
|
||||||
|
return HttpClients.createDefault();
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 这里创建了忽略整数验证的CloseableHttpClient对象
|
||||||
|
* @return
|
||||||
|
*/
|
||||||
|
public static CloseableHttpClient createSSLClientCookie(CookieStore cookie) {
|
||||||
|
try {
|
||||||
|
SSLContext sslContext = new SSLContextBuilder().loadTrustMaterial(null, new TrustStrategy() {
|
||||||
|
// 信任所有
|
||||||
|
public boolean isTrusted(X509Certificate[] chain, String authType) throws CertificateException {
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
}).build();
|
||||||
|
SSLConnectionSocketFactory sslsf = new SSLConnectionSocketFactory(sslContext);
|
||||||
|
return HttpClients.custom().setSSLSocketFactory(sslsf).setDefaultCookieStore(cookie).build();
|
||||||
|
} catch (KeyManagementException e) {
|
||||||
|
e.printStackTrace();
|
||||||
|
} catch (NoSuchAlgorithmException e) {
|
||||||
|
e.printStackTrace();
|
||||||
|
} catch (KeyStoreException e) {
|
||||||
|
e.printStackTrace();
|
||||||
|
}
|
||||||
|
return HttpClients.createDefault();
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 发送post请求
|
||||||
|
* @param url 请求地址
|
||||||
|
* @param json json格式字符串
|
||||||
|
* @param contentType 这里用 "application/json"
|
||||||
|
* @return
|
||||||
|
*/
|
||||||
|
public static String post(String url, String json, String contentType,String charset) {
|
||||||
|
if(charset==null||charset.trim().length()<1) charset="UTF-8";
|
||||||
|
if("json".equals(contentType)) contentType="application/json";
|
||||||
|
HttpClientBuilder httpClientBuilder = HttpClientBuilder.create();
|
||||||
|
//HttpClient
|
||||||
|
CloseableHttpClient client = httpClientBuilder.build();
|
||||||
|
client = (CloseableHttpClient) wrapClient(client);
|
||||||
|
HttpPost post = new HttpPost(url);
|
||||||
|
CloseableHttpResponse res = null;
|
||||||
|
try {
|
||||||
|
StringEntity s = new StringEntity(json, "utf-8");
|
||||||
|
if (StringUtils.isBlank(contentType)) {
|
||||||
|
s.setContentType("application/json");
|
||||||
|
}
|
||||||
|
s.setContentType(contentType);
|
||||||
|
post.setEntity(s);
|
||||||
|
res = client.execute(post);
|
||||||
|
HttpEntity entity = res.getEntity();
|
||||||
|
String str = EntityUtils.toString(entity, charset);
|
||||||
|
if(!"UTF-8".equals(getEncoding(str))) str=GBKtoUTF8(str);
|
||||||
|
return str;
|
||||||
|
}catch (Exception e) {
|
||||||
|
System.out.println("url错误:::"+e.toString());
|
||||||
|
e.printStackTrace();
|
||||||
|
}finally{
|
||||||
|
try {
|
||||||
|
res.close();
|
||||||
|
client.close();
|
||||||
|
post.reset();
|
||||||
|
} catch (IOException e) {
|
||||||
|
e.printStackTrace();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
@SuppressWarnings("deprecation")
|
||||||
|
private static org.apache.http.client.HttpClient wrapClient(HttpClient base) {
|
||||||
|
try {
|
||||||
|
SSLContext ctx = SSLContext.getInstance("TLSv1");
|
||||||
|
X509TrustManager tm = new X509TrustManager() {
|
||||||
|
public void checkClientTrusted(X509Certificate[] xcs,
|
||||||
|
String string) throws CertificateException {
|
||||||
|
}
|
||||||
|
|
||||||
|
public void checkServerTrusted(X509Certificate[] xcs,
|
||||||
|
String string) throws CertificateException {
|
||||||
|
}
|
||||||
|
|
||||||
|
public X509Certificate[] getAcceptedIssuers() {
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
};
|
||||||
|
ctx.init(null, new TrustManager[]{tm}, null);
|
||||||
|
SSLConnectionSocketFactory sslsf = new SSLConnectionSocketFactory(ctx, new String[]{"TLSv1"}, null,
|
||||||
|
SSLConnectionSocketFactory.BROWSER_COMPATIBLE_HOSTNAME_VERIFIER);
|
||||||
|
CloseableHttpClient httpclient = HttpClients.custom().setSSLSocketFactory(sslsf).build();
|
||||||
|
return httpclient;
|
||||||
|
|
||||||
|
} catch (Exception ex) {
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
//正则找出所有
|
||||||
|
public static String getUrl(String s){
|
||||||
|
String regex = "http[s]?:\\/\\/([\\w]+\\.)+[\\w]+([\\w./?%&=]*)?";
|
||||||
|
Pattern pattern = Pattern.compile(regex);
|
||||||
|
Matcher m = pattern.matcher(s);
|
||||||
|
String r="";
|
||||||
|
while(m.find()){
|
||||||
|
r+=m.group()+",";
|
||||||
|
}
|
||||||
|
return r;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 检查url是否可访问
|
||||||
|
* @param url
|
||||||
|
* @return
|
||||||
|
*/
|
||||||
|
public static boolean ckUrl(String url) {
|
||||||
|
|
||||||
|
if (StringUtils.isBlank(url)) {
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
HttpGet httpGet = new HttpGet(url);
|
||||||
|
RequestConfig config = RequestConfig.custom().setConnectTimeout(10000).setSocketTimeout(10000).setConnectionRequestTimeout(5000).build();
|
||||||
|
CloseableHttpClient httpClient = HttpClientBuilder.create().setDefaultRequestConfig(config).build();
|
||||||
|
try {
|
||||||
|
CloseableHttpResponse response = httpClient.execute(httpGet);
|
||||||
|
int statusCode = response.getStatusLine().getStatusCode();
|
||||||
|
if (statusCode != 200) return false;
|
||||||
|
} catch (Exception e) {
|
||||||
|
String s = e.getMessage();
|
||||||
|
if("Timeout waiting for connection from pool".equals(s)) return true;
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**检查字符串编码格式*/
|
||||||
|
public static String getEncoding(String str)
|
||||||
|
{
|
||||||
|
String encode;
|
||||||
|
|
||||||
|
encode = "UTF-16";
|
||||||
|
try
|
||||||
|
{
|
||||||
|
if(str.equals(new String(str.getBytes(), encode)))
|
||||||
|
{
|
||||||
|
return encode;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
catch(Exception ex) {}
|
||||||
|
|
||||||
|
encode = "ASCII";
|
||||||
|
try
|
||||||
|
{
|
||||||
|
if(str.equals(new String(str.getBytes(), encode)))
|
||||||
|
{
|
||||||
|
//字符串 str 中仅由数字和英文字母组成,无法识别其编码格式
|
||||||
|
return "UTF-8";
|
||||||
|
}
|
||||||
|
}
|
||||||
|
catch(Exception ex) {}
|
||||||
|
|
||||||
|
encode = "ISO-8859-1";
|
||||||
|
try
|
||||||
|
{
|
||||||
|
if(str.equals(new String(str.getBytes(), encode)))
|
||||||
|
{
|
||||||
|
return encode;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
catch(Exception ex) {}
|
||||||
|
|
||||||
|
encode = "GB2312";
|
||||||
|
try
|
||||||
|
{
|
||||||
|
if(str.equals(new String(str.getBytes(), encode)))
|
||||||
|
{
|
||||||
|
return encode;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
catch(Exception ex) {}
|
||||||
|
|
||||||
|
encode = "UTF-8";
|
||||||
|
try
|
||||||
|
{
|
||||||
|
if(str.equals(new String(str.getBytes(), encode)))
|
||||||
|
{
|
||||||
|
return encode;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
catch(Exception ex) {}
|
||||||
|
|
||||||
|
/*
|
||||||
|
*......待完善
|
||||||
|
*/
|
||||||
|
|
||||||
|
return "UTF-8";
|
||||||
|
}
|
||||||
|
|
||||||
|
/**将字符串转换字符编码*/
|
||||||
|
public static String GBKtoUTF8(String str) {
|
||||||
|
if("UTF-8".equals(getEncoding(str))) return str;
|
||||||
|
|
||||||
|
return getUTF8StringFromGBKString(str);
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
public static String getUTF8StringFromGBKString(String gbkStr) {
|
||||||
|
try {
|
||||||
|
return new String(getUTF8BytesFromGBKString(gbkStr), "UTF-8");
|
||||||
|
} catch (UnsupportedEncodingException e) {
|
||||||
|
throw new InternalError();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
public static byte[] getUTF8BytesFromGBKString(String gbkStr) {
|
||||||
|
int n = gbkStr.length();
|
||||||
|
byte[] utfBytes = new byte[3 * n];
|
||||||
|
int k = 0;
|
||||||
|
for (int i = 0; i < n; i++) {
|
||||||
|
int m = gbkStr.charAt(i);
|
||||||
|
if (m < 128 && m >= 0) {
|
||||||
|
utfBytes[k++] = (byte) m;
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
utfBytes[k++] = (byte) (0xe0 | (m >> 12));
|
||||||
|
utfBytes[k++] = (byte) (0x80 | ((m >> 6) & 0x3f));
|
||||||
|
utfBytes[k++] = (byte) (0x80 | (m & 0x3f));
|
||||||
|
}
|
||||||
|
if (k < utfBytes.length) {
|
||||||
|
byte[] tmp = new byte[k];
|
||||||
|
System.arraycopy(utfBytes, 0, tmp, 0, k);
|
||||||
|
return tmp;
|
||||||
|
}
|
||||||
|
return utfBytes;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 带有cookie和header 的post请求
|
||||||
|
* @param url
|
||||||
|
* @param params
|
||||||
|
* @param cookie
|
||||||
|
* @param header
|
||||||
|
* @return
|
||||||
|
*/
|
||||||
|
@SuppressWarnings("rawtypes")
|
||||||
|
public static String doPost2(String url, Map<String, String> params, CookieStore cookie,Map<String, String> header,String charset) {
|
||||||
|
if(charset==null||charset.trim().length()<1) charset="UTF-8";
|
||||||
|
if (StringUtils.isBlank(url)) {
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
|
||||||
|
List<NameValuePair> pairs = null;
|
||||||
|
if (params != null && !params.isEmpty()) {
|
||||||
|
pairs = new ArrayList<NameValuePair>(params.size());
|
||||||
|
for (Map.Entry<String, String> entry : params.entrySet()) {
|
||||||
|
String value = entry.getValue();
|
||||||
|
if (value != null) {
|
||||||
|
pairs.add(new BasicNameValuePair(entry.getKey(), value));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
HttpPost httpPost = new HttpPost(url);
|
||||||
|
|
||||||
|
Set<Entry<String, String>> set = header.entrySet();
|
||||||
|
Iterator<Entry<String, String>> s = set.iterator();
|
||||||
|
while (s.hasNext()) {
|
||||||
|
Map.Entry m = (Map.Entry) s.next();
|
||||||
|
httpPost.addHeader(m.getKey().toString(),m.getValue().toString());
|
||||||
|
}
|
||||||
|
|
||||||
|
CloseableHttpResponse response = null;
|
||||||
|
CloseableHttpClient httpClientc = null;
|
||||||
|
try {
|
||||||
|
if (pairs != null && pairs.size() > 0) {
|
||||||
|
httpPost.setEntity(new UrlEncodedFormEntity(pairs, CHARSET));
|
||||||
|
}
|
||||||
|
|
||||||
|
httpClientc = HttpUtils.createSSLClientCookie(cookie);
|
||||||
|
response = httpClientc.execute(httpPost);
|
||||||
|
int statusCode = response.getStatusLine().getStatusCode();
|
||||||
|
if (statusCode != 200) {
|
||||||
|
httpPost.abort();
|
||||||
|
throw new RuntimeException("HttpClient,error status code :" + statusCode);
|
||||||
|
}
|
||||||
|
HttpEntity entity = response.getEntity();
|
||||||
|
String result = null;
|
||||||
|
if (entity != null) {
|
||||||
|
result = EntityUtils.toString(entity, charset);
|
||||||
|
}
|
||||||
|
EntityUtils.consume(entity);
|
||||||
|
if(!"UTF-8".equals(getEncoding(result))) result=GBKtoUTF8(result);
|
||||||
|
return result;
|
||||||
|
} catch (Exception e) {
|
||||||
|
System.out.println("url错误:::"+e.toString());
|
||||||
|
e.printStackTrace();
|
||||||
|
}finally{
|
||||||
|
try {
|
||||||
|
response.close();
|
||||||
|
httpClientc.close();
|
||||||
|
httpPost.reset();
|
||||||
|
} catch (IOException e) {
|
||||||
|
e.printStackTrace();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 带有cookie和header 的get请求
|
||||||
|
* @param url
|
||||||
|
* @param params
|
||||||
|
* @param cookie
|
||||||
|
* @param header
|
||||||
|
* @return
|
||||||
|
*/
|
||||||
|
@SuppressWarnings("rawtypes")
|
||||||
|
public static String doGet2(String url, Map<String, String> params, CookieStore cookie,Map<String, String> header,String charset) {
|
||||||
|
if(charset==null||charset.trim().length()<1) charset="UTF-8";
|
||||||
|
if (StringUtils.isBlank(url)) {
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
|
||||||
|
HttpGet httpGet = null;
|
||||||
|
CloseableHttpClient httpsClient = null;
|
||||||
|
CloseableHttpResponse response = null;
|
||||||
|
try {
|
||||||
|
if (params != null && !params.isEmpty()) {
|
||||||
|
List<NameValuePair> pairs = new ArrayList<NameValuePair>(params.size());
|
||||||
|
for (Map.Entry<String, String> entry : params.entrySet()) {
|
||||||
|
String value = entry.getValue();
|
||||||
|
if (value != null) {
|
||||||
|
pairs.add(new BasicNameValuePair(entry.getKey(), value));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
url += "?" + EntityUtils.toString(new UrlEncodedFormEntity(pairs, charset));
|
||||||
|
}
|
||||||
|
httpGet = new HttpGet(url);
|
||||||
|
|
||||||
|
Set<Entry<String, String>> set = header.entrySet();
|
||||||
|
Iterator<Entry<String, String>> s = set.iterator();
|
||||||
|
while (s.hasNext()) {
|
||||||
|
Map.Entry m = (Map.Entry) s.next();
|
||||||
|
httpGet.addHeader(m.getKey().toString(),m.getValue().toString());
|
||||||
|
}
|
||||||
|
|
||||||
|
// https 注意这里获取https内容,使用了忽略证书的方式,当然还有其他的方式来获取https内容
|
||||||
|
httpsClient = HttpUtils.createSSLClientCookie(cookie);
|
||||||
|
response = httpsClient.execute(httpGet);
|
||||||
|
int statusCode = response.getStatusLine().getStatusCode();
|
||||||
|
if (statusCode != 200) {
|
||||||
|
httpGet.abort();
|
||||||
|
throw new RuntimeException("HttpClient,error status code :" + statusCode);
|
||||||
|
}
|
||||||
|
HttpEntity entity = response.getEntity();
|
||||||
|
String result = null;
|
||||||
|
if (entity != null) {
|
||||||
|
result = EntityUtils.toString(entity, charset);
|
||||||
|
}
|
||||||
|
EntityUtils.consume(entity);
|
||||||
|
response.close();
|
||||||
|
if(!"UTF-8".equals(getEncoding(result))) result=GBKtoUTF8(result);
|
||||||
|
return result;
|
||||||
|
}catch (Exception e) {
|
||||||
|
System.out.println("url错误:::"+e.toString());
|
||||||
|
e.printStackTrace();
|
||||||
|
}finally{
|
||||||
|
try {
|
||||||
|
response.close();
|
||||||
|
httpsClient.close();
|
||||||
|
httpGet.reset();
|
||||||
|
} catch (IOException e) {
|
||||||
|
e.printStackTrace();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
}
|
||||||
@@ -1,651 +0,0 @@
|
|||||||
package sc545.pay.utils;
|
|
||||||
|
|
||||||
import java.io.*;
|
|
||||||
import java.util.ArrayList;
|
|
||||||
import java.util.HashMap;
|
|
||||||
import java.util.Iterator;
|
|
||||||
import java.util.Map.Entry;
|
|
||||||
|
|
||||||
import javax.servlet.ServletContext;
|
|
||||||
|
|
||||||
public class ReadTxt {
|
|
||||||
|
|
||||||
public static void main(String[] args) {
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* 按行读取txt文件
|
|
||||||
*
|
|
||||||
* @param path
|
|
||||||
* 文件地址(默认D:\\scbox_settings开头)
|
|
||||||
* @return ArrayList 返回每行数据为一个items的集合
|
|
||||||
*/
|
|
||||||
public static ArrayList<String> readFileLine(ServletContext servletContext, String path) {
|
|
||||||
|
|
||||||
if(path.indexOf("./")==0)
|
|
||||||
path =path.substring(1, path.length());
|
|
||||||
|
|
||||||
if (servletContext == null) {
|
|
||||||
if(path.indexOf(":") <= 0&&path.indexOf("/") <0)
|
|
||||||
path = "D:\\scbox_settings\\" + path;
|
|
||||||
} else {
|
|
||||||
path = servletContext.getRealPath(path);
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
ArrayList<String> strarr = null;
|
|
||||||
try {
|
|
||||||
File file = new File(path);
|
|
||||||
if (file.isFile() && file.exists()) { // 判断文件是否存在
|
|
||||||
InputStreamReader read = new InputStreamReader(
|
|
||||||
new FileInputStream(file), "UTF-8");
|
|
||||||
BufferedReader bufferedReader = new BufferedReader(read);
|
|
||||||
String lineTxt = null;
|
|
||||||
strarr = new ArrayList<String>();
|
|
||||||
while ((lineTxt = bufferedReader.readLine()) != null) {
|
|
||||||
|
|
||||||
strarr.add(lineTxt);
|
|
||||||
}
|
|
||||||
|
|
||||||
read.close();
|
|
||||||
} else {
|
|
||||||
strarr = null;
|
|
||||||
}
|
|
||||||
} catch (IOException e) {
|
|
||||||
// TODO Auto-generated catch block
|
|
||||||
e.printStackTrace();
|
|
||||||
}
|
|
||||||
return strarr;
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
/**
|
|
||||||
* 写入txt文档,已存在就修改,否则写入末尾,自动加换行 (文件格式:key=value,换行分隔)
|
|
||||||
*
|
|
||||||
* @param path
|
|
||||||
* 文件地址(默认D:\\scbox_settings开头)
|
|
||||||
* @param keyname
|
|
||||||
* 要修改的参数名
|
|
||||||
* @param content
|
|
||||||
* 要修改的参数值
|
|
||||||
*/
|
|
||||||
public static void writeSetting(ServletContext servletContext, String path, String keyname, String content) {
|
|
||||||
|
|
||||||
/**************/
|
|
||||||
// 如果存在,则追加内容;如果文件不存在,则创建文件
|
|
||||||
if(path.indexOf("./")==0)
|
|
||||||
path =path.substring(1, path.length());
|
|
||||||
|
|
||||||
if (servletContext == null) {
|
|
||||||
if(path.indexOf(":") <= 0&&path.indexOf("/") <0)
|
|
||||||
path = "D:\\scbox_settings\\" + path;
|
|
||||||
} else {
|
|
||||||
path = servletContext.getRealPath(path);
|
|
||||||
}
|
|
||||||
|
|
||||||
try {
|
|
||||||
File file = new File(path);
|
|
||||||
if (file.isFile() && file.exists()) { // 判断文件是否存在
|
|
||||||
InputStreamReader read = new InputStreamReader(
|
|
||||||
new FileInputStream(file), "UTF-8");
|
|
||||||
BufferedReader bufferedReader = new BufferedReader(read);
|
|
||||||
String lineTxt = null;
|
|
||||||
boolean isread = false;// 是否读取到该行并修改
|
|
||||||
// 将内容全部读出来,存为新的数据流
|
|
||||||
// 读到要修改的行进行修改存入,否则原样读取存入
|
|
||||||
StringBuffer buf = new StringBuffer();
|
|
||||||
while ((lineTxt = bufferedReader.readLine()) != null) {
|
|
||||||
if (lineTxt.startsWith(keyname + "=")) {
|
|
||||||
buf.append(keyname + "=" + content + "\r\n");
|
|
||||||
isread = true;
|
|
||||||
} else {
|
|
||||||
buf.append(lineTxt + "\r\n");
|
|
||||||
}
|
|
||||||
}
|
|
||||||
read.close();
|
|
||||||
if (!isread) {// 没有读取到,写入末尾
|
|
||||||
buf.append(keyname + "=" + content + "\r\n");
|
|
||||||
}
|
|
||||||
|
|
||||||
// 把新内容覆盖写入文件
|
|
||||||
PrintWriter out = new PrintWriter(new BufferedWriter(
|
|
||||||
new OutputStreamWriter(new FileOutputStream(path),
|
|
||||||
"UTF-8")));
|
|
||||||
out.write(buf.toString());
|
|
||||||
out.flush();
|
|
||||||
out.close();
|
|
||||||
|
|
||||||
} else {// 不存在,创建写入
|
|
||||||
String path2 = path.substring(0, path.replace("\\", "/").lastIndexOf("/"));
|
|
||||||
File file1 = new File(path2);
|
|
||||||
// 如果文件夹不存在则创建
|
|
||||||
if (!file1.exists() && !file1.isDirectory()) {
|
|
||||||
file1.mkdirs();
|
|
||||||
}
|
|
||||||
File file2 = new File(path);
|
|
||||||
if (!file2.exists()) {
|
|
||||||
file2.createNewFile();
|
|
||||||
}
|
|
||||||
|
|
||||||
PrintWriter out = new PrintWriter(new BufferedWriter(
|
|
||||||
new OutputStreamWriter(new FileOutputStream(path),
|
|
||||||
"UTF-8")));
|
|
||||||
out.write(keyname + "=" + content + "\r\n");
|
|
||||||
out.flush();
|
|
||||||
out.close();
|
|
||||||
}
|
|
||||||
} catch (IOException e) {
|
|
||||||
// TODO Auto-generated catch block
|
|
||||||
e.printStackTrace();
|
|
||||||
}
|
|
||||||
/**************/
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* 读取txt配置,返回map集合(文件格式:key=value,换行分隔)
|
|
||||||
*
|
|
||||||
* @param path
|
|
||||||
* 文件地址(默认D:\\scbox_settings开头)
|
|
||||||
* @return hashmap
|
|
||||||
*/
|
|
||||||
public static HashMap<String, String> readSetting(ServletContext servletContext, String path) {
|
|
||||||
if(path.indexOf("./")==0)
|
|
||||||
path =path.substring(1, path.length());
|
|
||||||
|
|
||||||
if (servletContext == null) {
|
|
||||||
if(path.indexOf(":") <= 0&&path.indexOf("/") <0)
|
|
||||||
path = "D:\\scbox_settings\\" + path;
|
|
||||||
} else {
|
|
||||||
path = servletContext.getRealPath(path);
|
|
||||||
}
|
|
||||||
|
|
||||||
HashMap<String, String> strarr = null;
|
|
||||||
try {
|
|
||||||
File file = new File(path);
|
|
||||||
if (file.isFile() && file.exists()) { // 判断文件是否存在
|
|
||||||
InputStreamReader read = new InputStreamReader(
|
|
||||||
new FileInputStream(file), "UTF-8");
|
|
||||||
BufferedReader bufferedReader = new BufferedReader(read);
|
|
||||||
String lineTxt = null;
|
|
||||||
strarr = new HashMap<String, String>();
|
|
||||||
while ((lineTxt = bufferedReader.readLine()) != null) {
|
|
||||||
if(lineTxt.indexOf("#")==0){
|
|
||||||
continue;
|
|
||||||
}
|
|
||||||
String[] arr = new String[2];
|
|
||||||
if (lineTxt.split("=").length >= 2) {
|
|
||||||
arr[0] = lineTxt.split("=")[0];
|
|
||||||
arr[1] = lineTxt.replace(arr[0]+"=", "");
|
|
||||||
strarr.put(arr[0], arr[1]);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
read.close();
|
|
||||||
} else {
|
|
||||||
strarr = null;
|
|
||||||
}
|
|
||||||
} catch (IOException e) {
|
|
||||||
// TODO Auto-generated catch block
|
|
||||||
e.printStackTrace();
|
|
||||||
}
|
|
||||||
return strarr;
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
/**
|
|
||||||
* 获取配置文件中所有设置属性(含注释)<br>
|
|
||||||
* map.get("z") 取注释<br>
|
|
||||||
* map.get("k") 取key<br>
|
|
||||||
* map.get("v") 取value<br>
|
|
||||||
*
|
|
||||||
*
|
|
||||||
* @param path
|
|
||||||
* 文件地址(默认D:\\scbox_settings开头)
|
|
||||||
*
|
|
||||||
* @param t 只取以此字符开头的,不限制填null
|
|
||||||
* @param st 从以此字符开头的行开始读取,不限制填null
|
|
||||||
* @param et 读到以此字符开头的行结束,不限制填null
|
|
||||||
* @return
|
|
||||||
*/
|
|
||||||
public static ArrayList<HashMap<String, String>> getSettingAll(ServletContext servletContext, String path,String t,String st,String et) {
|
|
||||||
if(st==null||st.length()<1) st="";
|
|
||||||
if(et==null||et.length()<1) et="";
|
|
||||||
if(t==null||t.length()<1) t="";
|
|
||||||
if(path.indexOf("./")==0)
|
|
||||||
path =path.substring(1, path.length());
|
|
||||||
|
|
||||||
if (servletContext == null) {
|
|
||||||
if(path.indexOf(":") <= 0&&path.indexOf("/") <0)
|
|
||||||
path = "D:\\scbox_settings\\" + path;
|
|
||||||
} else {
|
|
||||||
path = servletContext.getRealPath(path);
|
|
||||||
}
|
|
||||||
|
|
||||||
ArrayList<HashMap<String, String>> list=new ArrayList<>();
|
|
||||||
try {
|
|
||||||
File file = new File(path);
|
|
||||||
if (file.isFile() && file.exists()) { // 判断文件是否存在
|
|
||||||
InputStreamReader read = new InputStreamReader(
|
|
||||||
new FileInputStream(file), "UTF-8");
|
|
||||||
BufferedReader bufferedReader = new BufferedReader(read);
|
|
||||||
String lineTxt = null;
|
|
||||||
String zs="";//注释文本
|
|
||||||
while ((lineTxt = bufferedReader.readLine()) != null) {
|
|
||||||
if((!"".equals(st))||lineTxt.indexOf(st)!=0) continue;
|
|
||||||
if((!"".equals(et))&&lineTxt.indexOf(et)==0) break;
|
|
||||||
HashMap<String, String> map = new HashMap<String, String>();
|
|
||||||
if(lineTxt.indexOf("#")==0){
|
|
||||||
zs=lineTxt;
|
|
||||||
continue;
|
|
||||||
}
|
|
||||||
String[] arr = new String[2];
|
|
||||||
if (lineTxt.split("=").length >= 2&&lineTxt.indexOf(t)==0) {
|
|
||||||
arr[0] = lineTxt.split("=")[0];
|
|
||||||
arr[1] = lineTxt.replace(arr[0]+"=", "");
|
|
||||||
map.put("z", zs);
|
|
||||||
map.put("k", arr[0]);
|
|
||||||
map.put("v", arr[1]);
|
|
||||||
list.add(map);
|
|
||||||
//把注释也加进去
|
|
||||||
zs="";
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
read.close();
|
|
||||||
} else {
|
|
||||||
list = null;
|
|
||||||
}
|
|
||||||
} catch (IOException e) {
|
|
||||||
// TODO Auto-generated catch block
|
|
||||||
e.printStackTrace();
|
|
||||||
}
|
|
||||||
return list;
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* 读取txt配置文件的某一项设置值 (文件格式:key=value,换行分隔)
|
|
||||||
*
|
|
||||||
* @param path
|
|
||||||
* 文件地址
|
|
||||||
* @param settingName
|
|
||||||
* 设置名
|
|
||||||
* @param nullString
|
|
||||||
* 设置值为空时默认返回的内容
|
|
||||||
* @return string
|
|
||||||
*/
|
|
||||||
public static String getSetting(ServletContext servletContext, String path, String settingName,String nullString) {
|
|
||||||
HashMap<String, String> setting = ReadTxt.readSetting(servletContext,path);
|
|
||||||
String val = setting == null ? nullString : setting.get(settingName);
|
|
||||||
val = val == null ? "" : val;
|
|
||||||
return "".equals(val.trim()) ? nullString : val;
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* 获取所有设置名以[settingName]开头的数据
|
|
||||||
* */
|
|
||||||
public static ArrayList<String> getSettingW(ServletContext servletContext, String path, String settingName) {
|
|
||||||
HashMap<String, String> setting = ReadTxt.readSetting(servletContext,path);
|
|
||||||
if(setting==null||setting.size()<1) return null;
|
|
||||||
Iterator<Entry<String, String>> it = setting.entrySet().iterator();
|
|
||||||
ArrayList<String> rs=new ArrayList<>();
|
|
||||||
while (it.hasNext()) {
|
|
||||||
Entry<String, String> en=it.next();
|
|
||||||
String k = en.getKey();
|
|
||||||
String v = en.getValue();
|
|
||||||
if(k.indexOf(settingName)==0){
|
|
||||||
rs.add(k+"="+v);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
return rs;
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* 删除某一项设置值 (文件格式:key=value,换行分隔)
|
|
||||||
*
|
|
||||||
* @param path
|
|
||||||
* 文件地址
|
|
||||||
* @param settingName
|
|
||||||
* 设置名
|
|
||||||
* @param nullString
|
|
||||||
* 设置值为空时默认返回的内容
|
|
||||||
* @return string
|
|
||||||
*/
|
|
||||||
public static void delSetting(ServletContext servletContext, String path, String settingName) {
|
|
||||||
|
|
||||||
|
|
||||||
/**************/
|
|
||||||
// 如果存在,则追加内容;如果文件不存在,则创建文件
|
|
||||||
if(path.indexOf("./")==0)
|
|
||||||
path =path.substring(1, path.length());
|
|
||||||
|
|
||||||
if (servletContext == null) {
|
|
||||||
if(path.indexOf(":") <= 0&&path.indexOf("/") <0)
|
|
||||||
path = "D:\\scbox_settings\\" + path;
|
|
||||||
} else {
|
|
||||||
path = servletContext.getRealPath(path);
|
|
||||||
}
|
|
||||||
|
|
||||||
try {
|
|
||||||
File file = new File(path);
|
|
||||||
if (file.isFile() && file.exists()) { // 判断文件是否存在
|
|
||||||
InputStreamReader read = new InputStreamReader(
|
|
||||||
new FileInputStream(file), "UTF-8");
|
|
||||||
BufferedReader bufferedReader = new BufferedReader(read);
|
|
||||||
String lineTxt = null;
|
|
||||||
// 将内容全部读出来,存为新的数据流
|
|
||||||
// 读到要修改的行进行修改存入,否则原样读取存入
|
|
||||||
StringBuffer buf = new StringBuffer();
|
|
||||||
while ((lineTxt = bufferedReader.readLine()) != null) {
|
|
||||||
if (lineTxt.startsWith(settingName + "=")) {
|
|
||||||
} else {
|
|
||||||
buf.append(lineTxt + "\r\n");
|
|
||||||
}
|
|
||||||
}
|
|
||||||
read.close();
|
|
||||||
|
|
||||||
// 把新内容覆盖写入文件
|
|
||||||
PrintWriter out = new PrintWriter(new BufferedWriter(
|
|
||||||
new OutputStreamWriter(new FileOutputStream(path),
|
|
||||||
"UTF-8")));
|
|
||||||
out.write(buf.toString());
|
|
||||||
out.flush();
|
|
||||||
out.close();
|
|
||||||
|
|
||||||
} else {// 不存在,创建
|
|
||||||
String path2 = path.substring(0, path.replace("\\", "/").lastIndexOf("/"));
|
|
||||||
File file1 = new File(path2);
|
|
||||||
// 如果文件夹不存在则创建
|
|
||||||
if (!file1.exists() && !file1.isDirectory()) {
|
|
||||||
file1.mkdirs();
|
|
||||||
}
|
|
||||||
File file2 = new File(path);
|
|
||||||
if (!file2.exists()) {
|
|
||||||
file2.createNewFile();
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
|
||||||
} catch (IOException e) {
|
|
||||||
// TODO Auto-generated catch block
|
|
||||||
e.printStackTrace();
|
|
||||||
}
|
|
||||||
/**************/
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
/**
|
|
||||||
* 删除设置名以[settingName]开头的数据
|
|
||||||
* @param servletContext
|
|
||||||
* @param path
|
|
||||||
* @param settingName
|
|
||||||
*/
|
|
||||||
public static void delSettingW(ServletContext servletContext, String path, String settingName) {
|
|
||||||
|
|
||||||
|
|
||||||
/**************/
|
|
||||||
// 如果存在,则追加内容;如果文件不存在,则创建文件
|
|
||||||
if(path.indexOf("./")==0)
|
|
||||||
path =path.substring(1, path.length());
|
|
||||||
|
|
||||||
if (servletContext == null) {
|
|
||||||
if(path.indexOf(":") <= 0&&path.indexOf("/") <0)
|
|
||||||
path = "D:\\scbox_settings\\" + path;
|
|
||||||
} else {
|
|
||||||
path = servletContext.getRealPath(path);
|
|
||||||
}
|
|
||||||
|
|
||||||
try {
|
|
||||||
File file = new File(path);
|
|
||||||
if (file.isFile() && file.exists()) { // 判断文件是否存在
|
|
||||||
InputStreamReader read = new InputStreamReader(
|
|
||||||
new FileInputStream(file), "UTF-8");
|
|
||||||
BufferedReader bufferedReader = new BufferedReader(read);
|
|
||||||
String lineTxt = null;
|
|
||||||
// 将内容全部读出来,存为新的数据流
|
|
||||||
// 读到要修改的行进行修改存入,否则原样读取存入
|
|
||||||
StringBuffer buf = new StringBuffer();
|
|
||||||
while ((lineTxt = bufferedReader.readLine()) != null) {
|
|
||||||
if (lineTxt.split("=")[0].indexOf(settingName)==0) {
|
|
||||||
} else {
|
|
||||||
buf.append(lineTxt + "\r\n");
|
|
||||||
}
|
|
||||||
}
|
|
||||||
read.close();
|
|
||||||
|
|
||||||
// 把新内容覆盖写入文件
|
|
||||||
PrintWriter out = new PrintWriter(new BufferedWriter(
|
|
||||||
new OutputStreamWriter(new FileOutputStream(path),
|
|
||||||
"UTF-8")));
|
|
||||||
out.write(buf.toString());
|
|
||||||
out.flush();
|
|
||||||
out.close();
|
|
||||||
|
|
||||||
} else {// 不存在,创建
|
|
||||||
String path2 = path.substring(0, path.replace("\\", "/").lastIndexOf("/"));
|
|
||||||
File file1 = new File(path2);
|
|
||||||
// 如果文件夹不存在则创建
|
|
||||||
if (!file1.exists() && !file1.isDirectory()) {
|
|
||||||
file1.mkdirs();
|
|
||||||
}
|
|
||||||
File file2 = new File(path);
|
|
||||||
if (!file2.exists()) {
|
|
||||||
file2.createNewFile();
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
|
||||||
} catch (IOException e) {
|
|
||||||
// TODO Auto-generated catch block
|
|
||||||
e.printStackTrace();
|
|
||||||
}
|
|
||||||
/**************/
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
/**
|
|
||||||
* 删除过期的所有设置值 (文件格式:key=value,换行分隔)
|
|
||||||
* <br>key为检测源
|
|
||||||
* @param servletContext
|
|
||||||
* @param path 路径
|
|
||||||
* @param d 有效天数
|
|
||||||
*/
|
|
||||||
public static void delOutDateSetting(ServletContext servletContext, String path, int d) {
|
|
||||||
|
|
||||||
|
|
||||||
/**************/
|
|
||||||
// 如果存在,则追加内容;如果文件不存在,则创建文件
|
|
||||||
if(path.indexOf("./")==0)
|
|
||||||
path =path.substring(1, path.length());
|
|
||||||
|
|
||||||
if (servletContext == null) {
|
|
||||||
if(path.indexOf(":") <= 0&&path.indexOf("/") <0)
|
|
||||||
path = "D:\\scbox_settings\\" + path;
|
|
||||||
} else {
|
|
||||||
path = servletContext.getRealPath(path);
|
|
||||||
}
|
|
||||||
|
|
||||||
try {
|
|
||||||
File file = new File(path);
|
|
||||||
if (file.isFile() && file.exists()) { // 判断文件是否存在
|
|
||||||
InputStreamReader read = new InputStreamReader(
|
|
||||||
new FileInputStream(file), "UTF-8");
|
|
||||||
BufferedReader bufferedReader = new BufferedReader(read);
|
|
||||||
String lineTxt = null;
|
|
||||||
// 将内容全部读出来,存为新的数据流
|
|
||||||
// 读到要修改的行进行修改存入,否则原样读取存入
|
|
||||||
StringBuffer buf = new StringBuffer();
|
|
||||||
boolean ts=false;
|
|
||||||
while ((lineTxt = bufferedReader.readLine()) != null) {
|
|
||||||
|
|
||||||
if(lineTxt.indexOf("=")>0&&lineTxt.indexOf("#")<0){
|
|
||||||
String[] ls = lineTxt.split("=");
|
|
||||||
int has = ls[0].length()-ls[0].replaceAll("-", "").length();
|
|
||||||
if(has>1){//日期时间
|
|
||||||
if(Utils.dateout(ls[0], d)){
|
|
||||||
buf.append(lineTxt + "\r\n");
|
|
||||||
}else{
|
|
||||||
ts=true;
|
|
||||||
}//过期
|
|
||||||
}else{//月份时间
|
|
||||||
buf.append(lineTxt + "\r\n");
|
|
||||||
}
|
|
||||||
|
|
||||||
}else{//注释或者不是setting
|
|
||||||
buf.append(lineTxt + "\r\n");
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
|
||||||
read.close();
|
|
||||||
if(ts){
|
|
||||||
// 把新内容覆盖写入文件
|
|
||||||
PrintWriter out = new PrintWriter(new BufferedWriter(
|
|
||||||
new OutputStreamWriter(new FileOutputStream(path),
|
|
||||||
"UTF-8")));
|
|
||||||
out.write(buf.toString());
|
|
||||||
out.flush();
|
|
||||||
out.close();
|
|
||||||
}
|
|
||||||
|
|
||||||
} else {// 不存在,创建
|
|
||||||
String path2 = path.substring(0, path.replace("\\", "/").lastIndexOf("/"));
|
|
||||||
File file1 = new File(path2);
|
|
||||||
// 如果文件夹不存在则创建
|
|
||||||
if (!file1.exists() && !file1.isDirectory()) {
|
|
||||||
file1.mkdirs();
|
|
||||||
}
|
|
||||||
File file2 = new File(path);
|
|
||||||
if (!file2.exists()) {
|
|
||||||
file2.createNewFile();
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
|
||||||
} catch (IOException e) {
|
|
||||||
// TODO Auto-generated catch block
|
|
||||||
e.printStackTrace();
|
|
||||||
}
|
|
||||||
/**************/
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
/**
|
|
||||||
* 删除过期的所有设置值 (文件格式:key=value,换行分隔)
|
|
||||||
* <br>value为检测源
|
|
||||||
* @param servletContext
|
|
||||||
* @param path 路径
|
|
||||||
* @param d 有效天数
|
|
||||||
*/
|
|
||||||
public static void delOutDateSettingValue(ServletContext servletContext, String path, int d) {
|
|
||||||
|
|
||||||
|
|
||||||
/**************/
|
|
||||||
// 如果存在,则追加内容;如果文件不存在,则创建文件
|
|
||||||
if(path.indexOf("./")==0)
|
|
||||||
path =path.substring(1, path.length());
|
|
||||||
|
|
||||||
if (servletContext == null) {
|
|
||||||
if(path.indexOf(":") <= 0&&path.indexOf("/") <0)
|
|
||||||
path = "D:\\scbox_settings\\" + path;
|
|
||||||
} else {
|
|
||||||
path = servletContext.getRealPath(path);
|
|
||||||
}
|
|
||||||
|
|
||||||
try {
|
|
||||||
File file = new File(path);
|
|
||||||
if (file.isFile() && file.exists()) { // 判断文件是否存在
|
|
||||||
InputStreamReader read = new InputStreamReader(
|
|
||||||
new FileInputStream(file), "UTF-8");
|
|
||||||
BufferedReader bufferedReader = new BufferedReader(read);
|
|
||||||
String lineTxt = null;
|
|
||||||
// 将内容全部读出来,存为新的数据流
|
|
||||||
// 读到要修改的行进行修改存入,否则原样读取存入
|
|
||||||
StringBuffer buf = new StringBuffer();
|
|
||||||
boolean ts=false;
|
|
||||||
while ((lineTxt = bufferedReader.readLine()) != null) {
|
|
||||||
|
|
||||||
if(lineTxt.indexOf("=")>0&&lineTxt.indexOf("#")<0){
|
|
||||||
String[] ls = lineTxt.split("=");
|
|
||||||
int has = ls[1].length()-ls[1].replaceAll("-", "").length();
|
|
||||||
if(has>1){//日期时间
|
|
||||||
if(Utils.dateout(ls[1], d)){
|
|
||||||
buf.append(lineTxt + "\r\n");
|
|
||||||
}else{
|
|
||||||
ts=true;
|
|
||||||
}//过期
|
|
||||||
}else{//月份时间
|
|
||||||
buf.append(lineTxt + "\r\n");
|
|
||||||
}
|
|
||||||
|
|
||||||
}else{//注释或者不是setting
|
|
||||||
buf.append(lineTxt + "\r\n");
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
|
||||||
read.close();
|
|
||||||
if(ts){
|
|
||||||
// 把新内容覆盖写入文件
|
|
||||||
PrintWriter out = new PrintWriter(new BufferedWriter(
|
|
||||||
new OutputStreamWriter(new FileOutputStream(path),
|
|
||||||
"UTF-8")));
|
|
||||||
out.write(buf.toString());
|
|
||||||
out.flush();
|
|
||||||
out.close();
|
|
||||||
}
|
|
||||||
|
|
||||||
} else {// 不存在,创建
|
|
||||||
String path2 = path.substring(0, path.replace("\\", "/").lastIndexOf("/"));
|
|
||||||
File file1 = new File(path2);
|
|
||||||
// 如果文件夹不存在则创建
|
|
||||||
if (!file1.exists() && !file1.isDirectory()) {
|
|
||||||
file1.mkdirs();
|
|
||||||
}
|
|
||||||
File file2 = new File(path);
|
|
||||||
if (!file2.exists()) {
|
|
||||||
file2.createNewFile();
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
|
||||||
} catch (IOException e) {
|
|
||||||
// TODO Auto-generated catch block
|
|
||||||
e.printStackTrace();
|
|
||||||
}
|
|
||||||
/**************/
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
/**
|
|
||||||
* 将InputStream装换成某种字符编码的String
|
|
||||||
*
|
|
||||||
* @param in
|
|
||||||
* @param encoding
|
|
||||||
* @return
|
|
||||||
*/
|
|
||||||
public static String InputStreamTOString(InputStream in, String encoding) {
|
|
||||||
int BUFFER_SIZE = 4096;
|
|
||||||
String res = null;
|
|
||||||
ByteArrayOutputStream outputStream = new ByteArrayOutputStream();
|
|
||||||
byte[] data = new byte[BUFFER_SIZE];
|
|
||||||
int count = -1;
|
|
||||||
try {
|
|
||||||
while ((count = in.read(data, 0, BUFFER_SIZE)) != -1) {
|
|
||||||
outputStream.write(data, 0, count);
|
|
||||||
}
|
|
||||||
} catch (Exception e) {
|
|
||||||
e.printStackTrace();
|
|
||||||
}
|
|
||||||
try {
|
|
||||||
res = new String(outputStream.toByteArray(), encoding);
|
|
||||||
} catch (UnsupportedEncodingException e) {
|
|
||||||
e.printStackTrace();
|
|
||||||
}
|
|
||||||
return res;
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
}
|
|
||||||
File diff suppressed because it is too large
Load Diff
Reference in New Issue
Block a user