java连接带有密码的https的例子
来源:互联网 发布:python的multiply函数 编辑:程序博客网 时间:2024/06/01 18:55
因为手上项目需要,之前对接另外一个系统用的是http请求webservice服务,测试环境一切正常,突然生产环境就访问不上,原来是人家生产环境用的https协议,没有导入人家的公钥就无法对接接口
经过网上查询很多资料,解决了自己碰上的问题 java无需ssl(数字证书) 访问https服务的 带用户名与密码的方式 下面是我的源码 写下此篇 方便后面的人使用
PS:注意URL那里 时间有点久 不知道当时为啥这么写了
package com.ab.services.xfire.sap.util;
import java.io.BufferedReader;
import java.io.DataOutputStream;
import java.io.InputStreamReader;
import java.io.UnsupportedEncodingException;
import java.net.URL;
import java.security.cert.CertificateException;
import java.security.cert.X509Certificate;
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;
public class HttpsClient {
public static String sendNotice(String url, String username,
String password, String data) {
String result = null;
try { // 设置SSLContext SSLContext sslcontext = SSLContext.getInstance("TLS"); sslcontext.init(null, new TrustManager[] { myX509TrustManager }, null); // 打开连接 // URL requestUrl = new URL(url); URL requestUrl = new URL(null, url, new sun.net.www.protocol.https.Handler()); HttpsURLConnection httpsConn = (HttpsURLConnection) requestUrl .openConnection(); httpsConn.setHostnameVerifier(new HostnameVerifier() { public boolean verify(String arg0, SSLSession arg1) { return true; } }); String input = username + ":" + password; String encoding = new sun.misc.BASE64Encoder().encode(input .getBytes()); httpsConn.setRequestProperty("Authorization", "Basic " + encoding); // 设置套接工厂 httpsConn.setSSLSocketFactory(sslcontext.getSocketFactory()); // 加入数据 httpsConn.setRequestMethod("POST"); httpsConn.setDoOutput(true); httpsConn.setDoInput(true); httpsConn.setRequestProperty("Content-Type", "application/soap+xml; charset=utf-8"); DataOutputStream out = new DataOutputStream( httpsConn.getOutputStream()); if (data != null) out.writeBytes(data); out.flush(); out.close(); // 获取输入流 BufferedReader in = new BufferedReader(new InputStreamReader( httpsConn.getInputStream())); int code = httpsConn.getResponseCode(); if (HttpsURLConnection.HTTP_OK == code) { String temp = in.readLine(); /* 连接成一个字符串 */ while (temp != null) { if (result != null) result += temp; else result = temp; temp = in.readLine(); } } } catch (Exception e) { e.printStackTrace(); } try { byte[] data1 = result.getBytes(); result =new String(data1,"utf-8"); } catch (UnsupportedEncodingException e) { e.printStackTrace(); } System.out.println("======================================================================="); System.out.println("最终返回的result:"+result); System.out.println("======================================================================="); return result;}private static TrustManager myX509TrustManager = new X509TrustManager() { public X509Certificate[] getAcceptedIssuers() { return null; } public void checkServerTrusted(X509Certificate[] chain, String authType) throws CertificateException { } public void checkClientTrusted(X509Certificate[] chain, String authType) throws CertificateException { }};
}
- java连接带有密码的https的例子
- asp连接带有密码的access
- Java 访问带有密码的 Mysql数据库
- 通过CouchDB-Python连接带有用户名/密码验证的数据库
- java程序如何穿透带有密码验证的代理
- java程序如何穿透带有密码验证的代理
- java程序如何穿透带有密码验证的代理
- 用Java程序如何穿透带有密码验证的代理
- 用Java程序如何穿透带有密码验证的代理
- java程序如何穿透带有密码验证的代理
- Java连接数据库的例子
- java 连接mysql的例子
- java 连接mysql的例子
- ADO方式连接带有密码的Access数据库文件(VC、Delphi)
- 连接字符串包含带有明文密码的凭据并且未使用集成安全性
- 如何进入带有密码的QQ空间
- 创建带有密码的sqlite 数据库
- 访问带有用户名、密码的URL
- CPU 和 GPU 的区别是什么
- 乘法/除法 转移位运算符
- SSH常用命令
- 7-8 修理牧场(25 分)
- 素数笔记
- java连接带有密码的https的例子
- 详解用Spring Boot零配置快速创建web项目
- NOIP2017模拟赛 好线路(dp)
- Spring+SpringMVC+MyBatis+easyUI整合基础篇(八)mysql中文查询bug修复
- Spring Transaction#TransactionalEventListener
- 粒子群算法形象解释
- PHPWeb开发相关知识学习记录
- spring boot 集成mybatis
- 哪些情况是友情链接作弊?总结了11种方法!