java项目关联Q登陆_Springboot项目实现第三方qq登录

importjava.io.IOException;importjava.net.SocketTimeoutException;importjava.security.GeneralSecurityException;importjava.security.cert.CertificateException;importjava.security.cert.X509Certificate;importjava.util.ArrayList;importjava.util.List;importjava.util.Map;importjava.util.Map.Entry;importjava.util.Set;importjavax.net.ssl.SSLContext;importjavax.net.ssl.SSLException;importjavax.net.ssl.SSLSession;importjavax.net.ssl.SSLSocket;/*** Created by Administrator on 2018/10/30/030.*/

importorg.apache.commons.io.IOUtils;importorg.apache.commons.lang3.StringUtils;importorg.apache.http.Consts;importorg.apache.http.HttpEntity;importorg.apache.http.HttpResponse;importorg.apache.http.NameValuePair;importorg.apache.http.client.HttpClient;importorg.apache.http.client.config.RequestConfig;importorg.apache.http.client.config.RequestConfig.Builder;importorg.apache.http.client.entity.UrlEncodedFormEntity;importorg.apache.http.client.methods.HttpGet;importorg.apache.http.client.methods.HttpPost;importorg.apache.http.conn.ConnectTimeoutException;importorg.apache.http.conn.ssl.SSLConnectionSocketFactory;importorg.apache.http.conn.ssl.SSLContextBuilder;importorg.apache.http.conn.ssl.TrustStrategy;importorg.apache.http.conn.ssl.X509HostnameVerifier;importorg.apache.http.entity.ContentType;importorg.apache.http.entity.StringEntity;importorg.apache.http.impl.client.CloseableHttpClient;importorg.apache.http.impl.client.HttpClients;importorg.apache.http.impl.conn.PoolingHttpClientConnectionManager;importorg.apache.http.message.BasicNameValuePair;

@SuppressWarnings("all")public classHttpClientUtils {public static final int connTimeout = 10000;public static final int readTimeout = 10000;public static final String charset = "UTF-8";private static HttpClient client = null;static{

PoolingHttpClientConnectionManager cm= newPoolingHttpClientConnectionManager();

cm.setMaxTotal(128);

cm.setDefaultMaxPerRoute(128);

client=HttpClients.custom().setConnectionManager(cm).build();

}public staticString postParameters(String url, String parameterStr)throwsConnectTimeoutException, SocketTimeoutException, Exception {return post(url, parameterStr, "application/x-www-form-urlencoded", charset, connTimeout, readTimeout);

}public staticString postParameters(String url, String parameterStr, String charset, Integer connTimeout,

Integer readTimeout)throwsConnectTimeoutException, SocketTimeoutException, Exception {return post(url, parameterStr, "application/x-www-form-urlencoded", charset, connTimeout, readTimeout);

}public static String postParameters(String url, Mapparams)throwsConnectTimeoutException, SocketTimeoutException, Exception {return postForm(url, params, null, connTimeout, readTimeout);

}public static String postParameters(String url, Mapparams, Integer connTimeout,

Integer readTimeout)throwsConnectTimeoutException, SocketTimeoutException, Exception {return postForm(url, params, null, connTimeout, readTimeout);

}public static String get(String url) throwsException {return get(url, charset, null, null);

}public static String get(String url, String charset) throwsException {returnget(url, charset, connTimeout, readTimeout);

}/*** 发送一个 Post 请求, 使用指定的字符集编码.

*

*@paramurl

*@parambody RequestBody

*@parammimeType 例如 application/xml "application/x-www-form-urlencoded"

* a=1&b=2&c=3

*@paramcharset 编码

*@paramconnTimeout 建立链接超时时间,毫秒.

*@paramreadTimeout 响应超时时间,毫秒.

*@returnResponseBody, 使用指定的字符集编码.

*@throwsConnectTimeoutException 建立链接超时异常

*@throwsSocketTimeoutException 响应超时

*@throwsException*/

public staticString post(String url, String body, String mimeType, String charset, Integer connTimeout,

Integer readTimeout)throwsConnectTimeoutException, SocketTimeoutException, Exception {

HttpClient client= null;

HttpPost post= newHttpPost(url);

String result= "";try{if(StringUtils.isNotBlank(body)) {

HttpEntity entity= newStringEntity(body, ContentType.create(mimeType, charset));

post.setEntity(entity);

}//设置参数

Builder customReqConf =RequestConfig.custom();if (connTimeout != null) {

customReqConf.setConnectTimeout(connTimeout);

}if (readTimeout != null) {

customReqConf.setSocketTimeout(readTimeout);

}

post.setConfig(customReqConf.build());

HttpResponse res;if (url.startsWith("https")) {//执行 Https 请求.

client =createSSLInsecureClient();

res=client.execute(post);

}else{//执行 Http 请求.

client =HttpClientUtils.client;

res=client.execute(post);

}

result=IOUtils.toString(res.getEntity().getContent(), charset);

}finally{

post.releaseConnection();if (url.startsWith("https") && client != null && client instanceofCloseableHttpClient) {

((CloseableHttpClient) client).close();

}

}returnresult;

}/*** 提交form表单

*

*@paramurl

*@paramparams

*@paramconnTimeout

*@paramreadTimeout

*@return*@throwsConnectTimeoutException

*@throwsSocketTimeoutException

*@throwsException*/

public static String postForm(String url, Map params, Mapheaders,

Integer connTimeout, Integer readTimeout)throwsConnectTimeoutException, SocketTimeoutException, Exception {

HttpClient client= null;

HttpPost post= newHttpPost(url);try{if (params != null && !params.isEmpty()) {

List formParams = new ArrayList();

Set> entrySet =params.entrySet();for (Entryentry : entrySet) {

formParams.add(newBasicNameValuePair(entry.getKey(), entry.getValue()));

}

UrlEncodedFormEntity entity= newUrlEncodedFormEntity(formParams, Consts.UTF_8);

post.setEntity(entity);

}if (headers != null && !headers.isEmpty()) {for (Entryentry : headers.entrySet()) {

post.addHeader(entry.getKey(), entry.getValue());

}

}//设置参数

Builder customReqConf =RequestConfig.custom();if (connTimeout != null) {

customReqConf.setConnectTimeout(connTimeout);

}if (readTimeout != null) {

customReqConf.setSocketTimeout(readTimeout);

}

post.setConfig(customReqConf.build());

HttpResponse res= null;if (url.startsWith("https")) {//执行 Https 请求.

client =createSSLInsecureClient();

res=client.execute(post);

}else{//执行 Http 请求.

client =HttpClientUtils.client;

res=client.execute(post);

}return IOUtils.toString(res.getEntity().getContent(), "UTF-8");

}finally{

post.releaseConnection();if (url.startsWith("https") && client != null && client instanceofCloseableHttpClient) {

((CloseableHttpClient) client).close();

}

}

}/*** 发送一个 GET 请求

*

*@paramurl

*@paramcharset

*@paramconnTimeout 建立链接超时时间,毫秒.

*@paramreadTimeout 响应超时时间,毫秒.

*@return*@throwsConnectTimeoutException 建立链接超时

*@throwsSocketTimeoutException 响应超时

*@throwsException*/

public staticString get(String url, String charset, Integer connTimeout, Integer readTimeout)throwsConnectTimeoutException, SocketTimeoutException, Exception {

HttpClient client= null;

HttpGet get= newHttpGet(url);

String result= "";try{//设置参数

Builder customReqConf =RequestConfig.custom();if (connTimeout != null) {

customReqConf.setConnectTimeout(connTimeout);

}if (readTimeout != null) {

customReqConf.setSocketTimeout(readTimeout);

}

get.setConfig(customReqConf.build());

HttpResponse res= null;if (url.startsWith("https")) {//执行 Https 请求.

client =createSSLInsecureClient();

res=client.execute(get);

}else{//执行 Http 请求.

client =HttpClientUtils.client;

res=client.execute(get);

}

result=IOUtils.toString(res.getEntity().getContent(), charset);

}finally{

get.releaseConnection();if (url.startsWith("https") && client != null && client instanceofCloseableHttpClient) {

((CloseableHttpClient) client).close();

}

}returnresult;

}/*** 从 response 里获取 charset

*

*@paramressponse

*@return

*/@SuppressWarnings("unused")private staticString getCharsetFromResponse(HttpResponse ressponse) {//Content-Type:text/html; charset=GBK

if (ressponse.getEntity() != null && ressponse.getEntity().getContentType() != null

&& ressponse.getEntity().getContentType().getValue() != null) {

String contentType=ressponse.getEntity().getContentType().getValue();if (contentType.contains("charset=")) {return contentType.substring(contentType.indexOf("charset=") + 8);

}

}return null;

}/*** 创建 SSL连接

*

*@return*@throwsGeneralSecurityException*/

private static CloseableHttpClient createSSLInsecureClient() throwsGeneralSecurityException {try{

SSLContext sslContext= new SSLContextBuilder().loadTrustMaterial(null, newTrustStrategy() {public boolean isTrusted(X509Certificate[] chain, String authType) throwsCertificateException {return true;

}

}).build();

SSLConnectionSocketFactory sslsf= new SSLConnectionSocketFactory(sslContext, newX509HostnameVerifier() {

@Overridepublic booleanverify(String arg0, SSLSession arg1) {return true;

}

@Overridepublic void verify(String host, SSLSocket ssl) throwsIOException {

}

@Overridepublic void verify(String host, X509Certificate cert) throwsSSLException {

}

@Overridepublic void verify(String host, String[] cns, String[] subjectAlts) throwsSSLException {

}

});returnHttpClients.custom().setSSLSocketFactory(sslsf).build();

}catch(GeneralSecurityException e) {throwe;

}

}public static voidmain(String[] args) {try{

String str= post("https://localhost:443/ssl/test.shtml", "name=12&page=34","application/x-www-form-urlencoded", "UTF-8", 10000, 10000);//String str=//get("https://localhost:443/ssl/test.shtml?name=12&page=34","GBK");

/** Map map = new HashMap(); map.put("name",

* "111"); map.put("page", "222"); String str=

* postForm("https://localhost:443/ssl/test.shtml",map,null, 10000, 10000);*/System.out.println(str);

}catch(ConnectTimeoutException e) {

e.printStackTrace();

}catch(SocketTimeoutException e) {

e.printStackTrace();

}catch(Exception e) {

e.printStackTrace();

}

}

}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值