写作初衷:由于日常开发经常需要用到很多工具类,经常根据需求自己写也比较麻烦 网上好了一些工具类例如commom.lang3或者hutool或者Jodd这样的开源工具,但是 发现他们之中虽然设计不错,但是如果我想要使用,就必须要引入依赖并且去维护依赖,有些 甚至会有存在版本编译不通过问题,故此想要写作一个每个类都可以作为独立工具类使用 每个使用者只需要复制该类,到任何项目当中都可以使用,所以需要尊从以下两个原则才能 做到.在此诚邀各位大佬参与.可以把各自用过的工具,整合成只依赖JDK,每个类都能够单独 使用的工具.每个人当遇到业务需求需要使用的时候,只需要到这里单独拷贝一个即可使用. 抛弃传统的需要引入依赖的烦恼.让大家一起来解决你所面临的业务问题吧!
遵从两大原则
package *;
import javax.net.ssl.HostnameVerifier;
import javax.net.ssl.HttpsURLConnection;
import javax.net.ssl.SSLContext;
import javax.net.ssl.SSLSession;
import javax.net.ssl.TrustManager;
import javax.net.ssl.X509TrustManager;
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.io.PrintWriter;
import java.net.ConnectException;
import java.net.SocketTimeoutException;
import java.net.URL;
import java.net.URLConnection;
import java.security.cert.X509Certificate;
/**
* @program: simple_tools
* @description:
* @author: ChenWenLong
* @create: 2019-10-17 15:50
**/
public class HttpUtils {
/**
* 功能描述:
* 〈发送get请求,请求参数格式是 name1=value1&name2=value2 的形式。〉
*
* @params : [url, param]
* @return : java.lang.String
* @author : cwl
* @date : 2019/10/17 15:53
*/
public static String sendGet(String url, String param) {
StringBuilder result = new StringBuilder();
BufferedReader in = null;
try {
String urlNameString = url + "?" + param;
URL realUrl = new URL(urlNameString);
URLConnection connection = realUrl.openConnection();
connection.setRequestProperty("accept", "*/*");
connection.setRequestProperty("connection", "Keep-Alive");
connection.setRequestProperty("user-agent", "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1;SV1)");
connection.connect();
in = new BufferedReader(new InputStreamReader(connection.getInputStream()));
String line;
while ((line = in.readLine()) != null) {
result.append(line);
}
} catch (ConnectException e) {
//此处转成自己的日志记录
System.out.println("调用HttpUtils.sendGet ConnectException, url=" + url + ",param=" + param);
} catch (SocketTimeoutException e) {
//此处转成自己的日志记录
System.out.println("调用HttpUtils.sendGet SocketTimeoutException, url=" + url + ",param=" + param);
} catch (IOException e) {
//此处转成自己的日志记录
System.out.println("调用HttpUtils.sendGet IOException, url=" + url + ",param=" + param);
} catch (Exception e) {
//此处转成自己的日志记录
System.out.println("调用HttpsUtil.sendGet Exception, url=" + url + ",param=" + param);
} finally {
try {
if (in != null) {
in.close();
}
} catch (Exception ex) {
//此处转成自己的日志记录
System.out.println("调用in.close Exception, url=" + url + ",param=" + param);
}
}
return result.toString();
}
/**
* 功能描述:
* 〈发送post请求,请求参数格式是 name1=value1&name2=value2 的形式。〉
*
* @params : [url, param]
* @return : java.lang.String
* @author : cwl
* @date : 2019/10/17 15:54
*/
public static String sendPost(String url, String param) {
PrintWriter out = null;
BufferedReader in = null;
StringBuilder result = new StringBuilder();
try {
String urlNameString = url + "?" + param;
URL realUrl = new URL(urlNameString);
URLConnection conn = realUrl.openConnection();
conn.setRequestProperty("accept", "*/*");
conn.setRequestProperty("connection", "Keep-Alive");
conn.setRequestProperty("user-agent", "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1;SV1)");
conn.setRequestProperty("Accept-Charset", "utf-8");
conn.setRequestProperty("contentType", "utf-8");
conn.setDoOutput(true);
conn.setDoInput(true);
out = new PrintWriter(conn.getOutputStream());
out.print(param);
out.flush();
in = new BufferedReader(new InputStreamReader(conn.getInputStream(), "utf-8"));
String line;
while ((line = in.readLine()) != null) {
result.append(line);
}
} catch (ConnectException e) {
//此处转成自己的日志记录
System.out.println("调用HttpUtils.sendPost ConnectException, url=" + url + ",param=" + param);
} catch (SocketTimeoutException e) {
//此处转成自己的日志记录
System.out.println("调用HttpUtils.sendPost SocketTimeoutException, url=" + url + ",param=");
} catch (IOException e) {
//此处转成自己的日志记录
System.out.println("调用HttpUtils.sendPost IOException, url=" + url + ",param=" + param);
} catch (Exception e) {
//此处转成自己的日志记录
System.out.println("调用HttpsUtil.sendPost Exception, url=" + url + ",param=" + param);
} finally {
try {
if (out != null) {
out.close();
}
if (in != null) {
in.close();
}
} catch (IOException ex) {
//此处转成自己的日志记录
System.out.println("调用in.close Exception, url=" + url + ",param=" + param);
}
}
return result.toString();
}
/**
* 功能描述:
* 〈发送SSL方式的Post方法 请求参数格式是 name1=value1&name2=value2 的形式〉
*
* @params : [url, param]
* @return : java.lang.String
* @author : cwl
* @date : 2019/10/17 16:00
*/
public static String sendSSLPost(String url, String param) {
StringBuilder result = new StringBuilder();
String urlNameString = url + "?" + param;
try {
SSLContext sc = SSLContext.getInstance("SSL");
sc.init(null, new TrustManager[]{new TrustAnyTrustManager()}, new java.security.SecureRandom());
URL console = new URL(urlNameString);
HttpsURLConnection conn = (HttpsURLConnection) console.openConnection();
conn.setRequestProperty("accept", "*/*");
conn.setRequestProperty("connection", "Keep-Alive");
conn.setRequestProperty("user-agent", "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1;SV1)");
conn.setRequestProperty("Accept-Charset", "utf-8");
conn.setRequestProperty("contentType", "utf-8");
conn.setDoOutput(true);
conn.setDoInput(true);
conn.setSSLSocketFactory(sc.getSocketFactory());
conn.setHostnameVerifier(new TrustAnyHostnameVerifier());
conn.connect();
InputStream is = conn.getInputStream();
BufferedReader br = new BufferedReader(new InputStreamReader(is));
String ret = "";
while ((ret = br.readLine()) != null) {
if (ret != null && !ret.trim().equals("")) {
result.append(new String(ret.getBytes("ISO-8859-1"), "utf-8"));
}
}
conn.disconnect();
br.close();
} catch (ConnectException e) {
System.out.println("调用HttpUtils.sendSSLPost ConnectException, url=" + url + ",param=" + param);
} catch (SocketTimeoutException e) {
System.out.println("调用HttpUtils.sendSSLPost SocketTimeoutException, url=" + url + ",param=" + param);
} catch (IOException e) {
System.out.println("调用HttpUtils.sendSSLPost IOException, url=" + url + ",param=" + param);
} catch (Exception e) {
System.out.println("调用HttpsUtil.sendSSLPost Exception, url=" + url + ",param=" + param);
}
return result.toString();
}
private static class TrustAnyTrustManager implements X509TrustManager {
@Override
public void checkClientTrusted(X509Certificate[] chain, String authType) {
}
@Override
public void checkServerTrusted(X509Certificate[] chain, String authType) {
}
@Override
public X509Certificate[] getAcceptedIssuers() {
return new X509Certificate[]{};
}
}
private static class TrustAnyHostnameVerifier implements HostnameVerifier {
@Override
public boolean verify(String hostname, SSLSession session) {
return true;
}
}
}