基于httpClient的https的无秘钥登陆
2024-09-17 20:08:25
HttpClient
package com.mediaforce.crawl.util; import java.util.ArrayList; import java.util.HashMap; import java.util.Iterator; import java.util.List; import java.util.Map; import java.util.Map.Entry; import org.apache.http.HttpEntity; import org.apache.http.HttpResponse; import org.apache.http.NameValuePair; import org.apache.http.client.HttpClient; import org.apache.http.client.entity.UrlEncodedFormEntity; import org.apache.http.client.methods.HttpPost; import org.apache.http.message.BasicNameValuePair; import org.apache.http.params.HttpConnectionParams; import org.apache.http.util.EntityUtils; import org.apache.log4j.Logger; public class HttpClientUtil { private static Logger logger = Logger.getLogger(HttpClientUtil.class); public static String doPost(String url,Map<String,String> map,String charset){ logger.info("doPost start"); HttpClient httpClient = null; HttpPost httpPost = null; String result = null; try{ httpClient = new SSLClient(); httpClient.getParams().setParameter(HttpConnectionParams.CONNECTION_TIMEOUT,2000); httpClient.getParams().setParameter(HttpConnectionParams.SO_TIMEOUT,2000); httpPost = new HttpPost(url); //设置参数 List<NameValuePair> list = new ArrayList<NameValuePair>(); Iterator<Entry<String, String>> iterator = map.entrySet().iterator(); while(iterator.hasNext()){ Entry<String,String> elem = (Entry<String, String>) iterator.next(); list.add(new BasicNameValuePair(elem.getKey(),elem.getValue())); } if(list.size() > 0){ UrlEncodedFormEntity entity = new UrlEncodedFormEntity(list,charset); httpPost.setEntity(entity); } HttpResponse response = httpClient.execute(httpPost); if(response != null){ HttpEntity resEntity = response.getEntity(); if(resEntity != null){ result = EntityUtils.toString(resEntity,charset); } } }catch(Exception ex){ logger.error("dopost error",ex); } logger.info("doPost over result:"+result); return result; } }
SSLClient
package com.mediaforce.crawl.util; import java.security.cert.CertificateException; import java.security.cert.X509Certificate; import javax.net.ssl.SSLContext; import javax.net.ssl.TrustManager; import javax.net.ssl.X509TrustManager; import org.apache.http.conn.ClientConnectionManager; import org.apache.http.conn.scheme.Scheme; import org.apache.http.conn.scheme.SchemeRegistry; import org.apache.http.conn.ssl.SSLSocketFactory; import org.apache.http.impl.client.DefaultHttpClient; public class SSLClient extends DefaultHttpClient{ public SSLClient() throws Exception{ super(); SSLContext ctx = SSLContext.getInstance("TLS"); X509TrustManager tm = new X509TrustManager() { @Override public void checkClientTrusted(X509Certificate[] chain, String authType) throws CertificateException { } @Override public void checkServerTrusted(X509Certificate[] chain, String authType) throws CertificateException { } @Override public X509Certificate[] getAcceptedIssuers() { return null; } }; ctx.init(null, new TrustManager[]{tm}, null); SSLSocketFactory ssf = new SSLSocketFactory(ctx,SSLSocketFactory.ALLOW_ALL_HOSTNAME_VERIFIER); ClientConnectionManager ccm = this.getConnectionManager(); SchemeRegistry sr = ccm.getSchemeRegistry(); sr.register(new Scheme("https", 443, ssf)); } }
最新文章
- Awesome
- JavaScript-事件坐标
- 基础知识《六》---Java集合类: Set、List、Map、Queue使用场景梳理
- Ajax解决IE浏览器兼容问题
- ZOJ 2588 Burning Bridges(求含重边的无向连通图的割边) - from lanshui_Yang
- Unity3d集成移动MM SDK 2.2的技术要点(坑爹的MM SDK)
- Delta-wave
- 用 Java 技术创建 RESTful Web 服务--转载
- Netflix公司监控内部安全的开源项目
- postgresql数据库配置csv格式的日志输出
- 【Java收集的源代码分析】Hashtable源代码分析
- 利用LI标签仿照a中Link进行页面跳转?
- idea启动TOMCAT html 乱码
- 检索 COM 类工厂中 CLSID 为 {00024500-0000-0000-C000-000000000046} 的组件时失 败,原因是出现以下错误: 80080005
- 让运行着的ASP.NET Web程序重新启动
- js作用域题目
- 撩课-Web大前端每天5道面试题-Day27
- eclipse新发现功能之dos和terminal(ssh连接)
- Redis 在线管理工具(phpRedisAdmin)介绍
- java读取配置文件内容