From 98b1a0affd69bbe63223c21fdd2c404e8bedfccb Mon Sep 17 00:00:00 2001 From: admin <weikou2014> Date: 星期三, 20 五月 2020 17:25:08 +0800 Subject: [PATCH] Merge remote-tracking branch 'origin/div' into 2.1.2 --- utils/src/main/java/org/yeshi/utils/HttpUtil.java | 165 ++++++++++++++++++++++++++++++++++++++++++++++-------- 1 files changed, 139 insertions(+), 26 deletions(-) diff --git a/utils/src/main/java/org/yeshi/utils/HttpUtil.java b/utils/src/main/java/org/yeshi/utils/HttpUtil.java index c51b1cf..161c024 100644 --- a/utils/src/main/java/org/yeshi/utils/HttpUtil.java +++ b/utils/src/main/java/org/yeshi/utils/HttpUtil.java @@ -9,8 +9,15 @@ import java.net.MalformedURLException; import java.net.URL; import java.net.URLEncoder; +import java.security.KeyStore; +import java.util.ArrayList; import java.util.Iterator; +import java.util.List; import java.util.Map; +import java.util.regex.Matcher; +import java.util.regex.Pattern; + +import javax.net.ssl.SSLContext; import org.apache.commons.httpclient.Header; import org.apache.commons.httpclient.HttpClient; @@ -24,6 +31,7 @@ import org.apache.commons.httpclient.methods.multipart.Part; import org.apache.commons.httpclient.methods.multipart.StringPart; import org.apache.commons.io.FileUtils; +import org.apache.http.HttpEntity; import org.apache.http.HttpHost; import org.apache.http.auth.AuthScope; import org.apache.http.auth.UsernamePasswordCredentials; @@ -31,16 +39,33 @@ 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.conn.ssl.SSLConnectionSocketFactory; +import org.apache.http.conn.ssl.SSLContexts; +import org.apache.http.entity.StringEntity; import org.apache.http.impl.client.BasicCredentialsProvider; import org.apache.http.impl.client.CloseableHttpClient; import org.apache.http.impl.client.HttpClients; import org.apache.http.util.EntityUtils; import org.yeshi.utils.entity.ProxyIP; -import net.sf.json.JSONArray; import net.sf.json.JSONObject; public class HttpUtil { + + public static List<String> getUrlListFromText(String text) { + List<String> urlList = new ArrayList<String>(); + // 閾炬帴 + String URL_REGEX = "(((http|https)://)|(www\\.))[a-zA-Z0-9\\._-]+\\.[a-zA-Z]{2,6}(:[0-9]{1,4})?(/[a-zA-Z0-9\\&%_\\./-~-]*)?"; + Pattern p = Pattern.compile(URL_REGEX); + Matcher matcher = p.matcher(text); + while (matcher.find()) { + String url = matcher.group(); + if (!StringUtil.isNullOrEmpty(url)) { + urlList.add(url); + } + } + return urlList; + } public static String getHost(String host) { try { @@ -52,39 +77,41 @@ return ""; } - public static String getShortLink(String url) { - String shortLink = getShortLink2(url); - if (StringUtil.isNullOrEmpty(shortLink)) - shortLink = getShortLink3(url); + public static String getShortLink(String url) { + // return url; + String shortLink = getShortLink3(url); if (StringUtil.isNullOrEmpty(shortLink)) shortLink = getShortLink1(url); + if (StringUtil.isNullOrEmpty(shortLink)) + shortLink = getShortLink2(url); return shortLink; } private static String getShortLink1(String url) { try { - String totalUrl = String.format("http://api.suolink.cn/api.php?url=%s", URLEncoder.encode(url)); + String totalUrl = String.format( + "http://suo.im/api.htm?format=json&url=%s&key=5d7728078e676d45275f816b@681bb0446f1e6af4f8fc6ce3cad2a684", + URLEncoder.encode(url)); String result = get(totalUrl, null); - if (!StringUtil.isNullOrEmpty(result) && result.startsWith("http")) - return result.trim(); + System.out.println(result); + try { + JSONObject json = JSONObject.fromObject(result); + return json.optString("url"); + } catch (Exception e) { + } } catch (Exception e) { - return url; } return null; } + // 鎼滅嫄缃戝潃 private static String getShortLink2(String url) { try { - String totalUrl = String.format( - "https://api.weibo.com/2/short_url/shorten.json?source=3403499693&url_long=%s", - URLEncoder.encode(url)); + String totalUrl = String.format("https://sohu.gg/api/?key=2zumZxsL8MuX&url=%s", + URLEncoder.encode(url, "UTF-8")); String result = get(totalUrl, null); - JSONObject data = JSONObject.fromObject(result); - JSONArray array = data.optJSONArray("urls"); - data = array.optJSONObject(0); - String shortUrl = data.optString("url_short"); - if (!StringUtil.isNullOrEmpty(shortUrl)) - return shortUrl; + if (result != null && result.startsWith("http")) + return result; } catch (Exception e) { e.printStackTrace(); } @@ -93,16 +120,11 @@ private static String getShortLink3(String url) { try { - String totalUrl = String.format( - "https://api.weibo.com/2/short_url/shorten.json?source=2963429064&url_long=%s", - URLEncoder.encode(url)); + String totalUrl = String.format("http://h5.flq001.com/short/createShort?url=%s", + URLEncoder.encode(url, "UTF-8")); String result = get(totalUrl, null); JSONObject data = JSONObject.fromObject(result); - JSONArray array = data.optJSONArray("urls"); - data = array.optJSONObject(0); - String shortUrl = data.optString("url_short"); - if (!StringUtil.isNullOrEmpty(shortUrl)) - return shortUrl; + return data.optString("short_url"); } catch (Exception e) { e.printStackTrace(); } @@ -321,6 +343,20 @@ return null; } + public static String postSimple(String url) { + HttpClient client = new HttpClient(); + PostMethod method = new PostMethod(url); + try { + client.executeMethod(method); + return method.getResponseBodyAsString(); + } catch (HttpException e) { + e.printStackTrace(); + } catch (IOException e) { + e.printStackTrace(); + } + return ""; + } + public static String post(String url) { HttpClient client = new HttpClient(); PostMethod method = new PostMethod(url); @@ -457,6 +493,24 @@ return ""; } + @SuppressWarnings("deprecation") + public static String post(String url, String entity, String charset) { + HttpClient client = new HttpClient(); + PostMethod method = new PostMethod(url); + method.addRequestHeader("Content-Type", "text/html;charset=" + charset); + method.setRequestHeader("Content-Type", "text/html;charset=" + charset); + method.setRequestBody(entity); + try { + client.executeMethod(method); + return convertInputStreamToString(method.getResponseBodyAsStream()); + } catch (HttpException e) { + e.printStackTrace(); + } catch (IOException e) { + e.printStackTrace(); + } + return ""; + } + public static String postInputStream(String url, File file) throws FileNotFoundException { HttpClient client = new HttpClient(); PostMethod postMethod = new PostMethod(url); @@ -527,4 +581,63 @@ } return null; } + + @SuppressWarnings("deprecation") + public static String httpsPost(String url, String body, String pwd, InputStream cert) throws Exception { + String result = ""; + KeyStore keyStore = KeyStore.getInstance("PKCS12"); + InputStream instream = cert; + try { + keyStore.load(instream, pwd.toCharArray()); + } finally { + instream.close(); + } + + // Trust own CA and all self-signed certs + SSLContext sslcontext = SSLContexts.custom().loadKeyMaterial(keyStore, pwd.toCharArray()).build(); + // Allow TLSv1 protocol only + SSLConnectionSocketFactory sslsf = new SSLConnectionSocketFactory(sslcontext, new String[] { "TLSv1" }, null, + SSLConnectionSocketFactory.BROWSER_COMPATIBLE_HOSTNAME_VERIFIER); + CloseableHttpClient httpclient = HttpClients.custom().setSSLSocketFactory(sslsf).build(); + try { + HttpPost httppost = new HttpPost(url); + httppost.setHeader("Content-Type", "text/html;charset=UTF-8"); + System.out.println("executing request" + httppost.getRequestLine()); + httppost.setEntity(new StringEntity(body, "UTF-8")); + CloseableHttpResponse response = httpclient.execute(httppost); + try { + HttpEntity entity = response.getEntity(); + if (entity != null) { + result = convertInputStreamToString(entity.getContent()); + } + EntityUtils.consume(entity); + } finally { + response.close(); + } + } finally { + httpclient.close(); + } + + return result; + } + + /** + * 鑾峰彇post杩斿洖location + * + * @param url + * @return + */ + public static String getLocation(String url) { + HttpClient client = new HttpClient(); + PostMethod method = new PostMethod(url); + try { + client.executeMethod(method); + return method.getResponseHeader("location").getValue(); + } catch (HttpException e) { + e.printStackTrace(); + } catch (IOException e) { + e.printStackTrace(); + } + return null; + } } -- Gitblit v1.8.0