开通了一个https协议,但是不是国际认证的,自己做的证书,访问一个接口的时候比如 https:/xx.xx.xx.xx/a?c=d的时候,如果在游览器访问,需要用户确认的。如果我要模拟服务器向这个接口发送请求,就会报错误。
我的原代码是:
1 创建信任管理器
/** * 信任管理器 * * @author liufeng * @date 2013-04-10 */ public class MyX509TrustManager implements X509TrustManager { // 检查客户端证书 public void checkClientTrusted(X509Certificate[] chain, String authType) throws CertificateException { } // 检查服务器端证书 public void checkServerTrusted(X509Certificate[] chain, String authType) throws CertificateException { } // 返回受信任的X509证书数组 public X509Certificate[] getAcceptedIssuers() { return null; } }
2。httpsclient 创建证书
/** * 发送https请求 * * @param requestUrl 请求地址 * @param requestMethod 请求方式(GET、POST) * @param outputStr 提交的数据 * @return JSONObject(通过JSONObject.get(key)的方式获取json对象的属性值) */ public static JSONObject httpsRequest(String requestUrl, String requestMethod, String outputStr) { JSONObject jsonObject = null; try { // 创建SSLContext对象,并使用我们指定的信任管理器初始化 TrustManager[] tm = { new MyX509TrustManager() }; SSLContext sslContext = SSLContext.getInstance("SSL", "SunJSSE"); sslContext.init(null, tm, new java.security.SecureRandom()); // 从上述SSLContext对象中得到SSLSocketFactory对象 SSLSocketFactory ssf = sslContext.getSocketFactory(); URL url = new URL(requestUrl); HttpsURLConnection conn = (HttpsURLConnection) url.openConnection(); conn.setSSLSocketFactory(ssf); conn.setDoOutput(true); conn.setDoInput(true); conn.setUseCaches(false); // 设置请求方式(GET/POST) conn.setRequestMethod(requestMethod); // 当outputStr不为null时向输出流写数据 if (null != outputStr) { OutputStream outputStream = conn.getOutputStream(); // 注意编码格式 outputStream.write(outputStr.getBytes("UTF-8")); outputStream.close(); } // 从输入流读取返回内容 InputStream inputStream = conn.getInputStream(); InputStreamReader inputStreamReader = new InputStreamReader(inputStream, "utf-8"); BufferedReader bufferedReader = new BufferedReader(inputStreamReader); String str = null; StringBuffer buffer = new StringBuffer(); while ((str = bufferedReader.readLine()) != null) { buffer.append(str); } // 释放资源 bufferedReader.close(); inputStreamReader.close(); inputStream.close(); inputStream = null; conn.disconnect(); jsonObject = JSONObject.fromObject(buffer.toString()); } catch (ConnectException ce) { log.error("连接超时:{}", ce); } catch (Exception e) { log.error("https请求异常:{}", e); } return jsonObject; }
相关推荐
android 访问https时 发送请求前 SsX509TrustManager.allowAllSSL();
Android 图片压缩库Tiny,解决GooglePlay对rustManager审核不通过。
X509TrustManager tm = new X509TrustManager() { public X509Certificate[] getAcceptedIssuers() { return null; } public void checkClientTrusted(X509Certificate[] arg0, String arg1) throws ...
微信创建菜单。思路大概是:就是先获取access_token,然后带着一定规则的json数据参数请求创建菜单的接口
这个是java 的 这个是java的 里面只是让你借鉴 不是上你直接使用的 不是让你直接使用的 不是让你直接使用的 需要你自己看看
new X509TrustManager() { public java.security.cert.X509Certificate[] getAcceptedIssuers() { return null; } public void checkClientTrusted(java.security.cert.X509...
由于第三方服务商更新服务器证书,导致向其...public class TrustAllTrustManager implements javax.net.ssl.TrustManager, javax.net.ssl.X509TrustManager { @Override public java.security.cert.X509Certificate
2.MyX509TrustManager为证书信任管理器 3.SignUtil 为验证消息真实性(请求来源于微信)工具类 4.WeixinUtil包括了接收和发送消息类型初始化以及微信公众平台接口Url的初始化 5.XmlMessUtil是xml形式消息处理工具类
Https单向认证忽略证书工具类,自定义TrustManager和HostnameVerifier,适用于OkHttp和HttpURLConnection
SSL跳过证书 java ctx.init(null, new TrustManager[] { tm }, new java.security.SecureRandom()); // SSLConnectionSocketFactory ssf = new SSLConnectionSocketFactory( // ctx, NoopHostnameVerifier.INSTANCE)...
CertTrustManager 一个简单的Windows程序,可以保存嵌入式SSL / TLS证书(.cer文件),并提供一个按钮来信任或不信任该证书。用法首先,嵌入证书从下载并解压缩到某个地方。 运行CertTrustManager.exe 。 因为我们...
根据中国公民身份证号码算法 实现验证身份证号码合法性 已实现java类函数 可直接调用即可 非常方便实用
和证书锁定实现绕过 SSL。 绕过 SSL 检查的过程只是简单地在某些函数上设置断点,并将使用中的 TrustManager() 替换为信任所有证书的一个。 HostNameVerifier () 也替换为 ALLOW_ALL_HOSTNAME_VERIFIER。 希望该工具...
检测项域名(Hostname)验证不严格Webview证书错误未处理命令注入/动态加载TrustManager未进行证书校验MD2,MD4,MD5弱信息摘要算法使用SHA-1弱信息摘要算法错误字符转换DES / DESede使用RSA Nopadding RSA密钥长度...
SSLContext Kickstart :locked_with_key: 使用以下方法安装库: 用安装 < groupId>io.github.hakky54 < artifactId>sslcontext-kickstart < version>6.2.0 使用Gradle安装 implementation ' io.github.hakky54:...
通过在运行菜单中键入regedit来运行注册表编辑器。 移至“ \ HKEY_LOCAL_MACHINE \ SOFTWARE \ Microsoft \ .NETFramework \ Security \ TrustManager \ PromptingLevel” 将“ Internet,Localintranet,My...