java连接带有密码的https的例子
2017-11-02 16:51
169 查看
因为手上项目需要,之前对接另外一个系统用的是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;
}
经过网上查询很多资料,解决了自己碰上的问题 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连接远程带有密码的mongodb数据库
- Java 使用SSH连接Linux 使用passwd命令修改密码
- Java 实现连接sql server 2000(JDBC数据库访问例子)
- java网络编程实现客户端连接服务器端,并发送消息例子(1)。(阻塞式的方法)
- java连接mysql的一个小例子
- Java NIO SocketChannel客户端例子(支持连接失败后自动重连)
- ado.net中带有用户名及密码的数据库连接字符串
- java 连接mysql的例子
- git https连接方式,记住密码
- Java网络连接之HttpURLConnection、HttpsURLConnection
- Java中连接MySql数据库的例子
- Java与Mysql6的jdbc连接例子
- java连接数据库操作--第一个例子
- java连接https时禁用证书验证.
- Java中后台通过Post方式连接HTTPS获取返回的值
- Java连接数据库的例子
- 连接字符串包含带有明文密码的凭据并且未使用集成安全性
- JAVA操作SSL协议,通过Socket访问Https的程序代码例子
- java连接https时禁用证书验证.
- Java 实现连接sql server 2000(JDBC数据库访问例子)