导航:首页 > 编程语言 > sockethttpsjava

sockethttpsjava

发布时间:2025-03-13 12:08:51

java客户端怎么访问带有pfx格式证书的https网站(服务器)呢,

使用HttpURLConnection访问https地址。

以下是导入JKS证书的方式,可以参考。

Stringkeystorefile="file";
Stringkeystorepw="password";
Stringkeypw="password";

KeyStorekeystore=KeyStore.getInstance("JKS");
keystore.load(newFileInputStream(keystorefile),keystorepw.toCharArray());
=KeyManagerFactory.getInstance("SunX509");
keymanagerfactory.init(keystore,keypw.toCharArray());
KeyManagerakeymanager[]=keymanagerfactory.getKeyManagers();
=TrustManagerFactory.getInstance("SunX509");
trustmanagerfactory.init(keystore);
TrustManageratrustmanager[]=trustmanagerfactory.getTrustManagers();
sslcontext=SSLContext.getInstance("TLS");
sslcontext.init(akeymanager,atrustmanager,null);
sslSocketFactory=sslcontext.getSocketFactory();

Stringurl="asdfdf";
URLtestURL=newURL(url);
=(HttpURLConnection)testURL.openConnection();
if(){
HttpsURLConnectionconn=(HttpsURLConnection)urlConnection;
conn.setSSLSocketFactory(sslSocketFactory);
}

Ⅱ 如何用JAVA实现HTTPS客户端

import java.io.*;
import java.net.*;
import java.security.cert.CertificateException;
import java.security.cert.X509Certificate;
import javax.net.ssl.*;
public class TrustSSL {
private static class TrustAnyTrustManager implements X509TrustManager {
public void checkClientTrusted(X509Certificate[] chain, String authType)
throws CertificateException {
}
public void checkServerTrusted(X509Certificate[] chain, String authType)
throws CertificateException {
}
public X509Certificate[] getAcceptedIssuers() {
return new X509Certificate[] {};
}
}
private static class TrustAnyHostnameVerifier implements HostnameVerifier {
public boolean verify(String hostname, SSLSession session) {
return true;
}
}
public static void main(String[] args) throws Exception {
InputStream in = null;
OutputStream out = null;
byte[] buffer = new byte[4096];
String str_return = "";
try {
SSLContext sc = SSLContext.getInstance("SSL");
sc.init(null, new TrustManager[] { new TrustAnyTrustManager() },
new java.security.SecureRandom());
URL console = new URL(
"https://192.168.1.188/test.php?username=测试");
HttpsURLConnection conn = (HttpsURLConnection) console
.openConnection();
conn.setSSLSocketFactory(sc.getSocketFactory());
conn.setHostnameVerifier(new TrustAnyHostnameVerifier());
conn.connect();
InputStream is = conn.getInputStream();
DataInputStream indata = new DataInputStream(is);
String ret = "";
while (ret != null) {
ret = indata.readLine();
if (ret != null && !ret.trim().equals("")) {
str_return = str_return
+ new String(ret.getBytes("ISO-8859-1"), "GBK");
}
}
conn.disconnect();
} catch (ConnectException e) {
System.out.println("ConnectException");
System.out.println(e);
throw e;
} catch (IOException e) {
System.out.println("IOException");
System.out.println(e);
throw e;
} finally {
try {
in.close();
} catch (Exception e) {
}
try {
out.close();
} catch (Exception e) {
}
}
System.out.println(str_return);
}
}

Ⅲ 求解java怎样发送https请求

使用httpClient可以发送,具体的可以参考下面的代码

SSLClient类,继承至HttpClient

importjava.security.cert.CertificateException;
importjava.security.cert.X509Certificate;
importjavax.net.ssl.SSLContext;
importjavax.net.ssl.TrustManager;
importjavax.net.ssl.X509TrustManager;
importorg.apache.http.conn.ClientConnectionManager;
importorg.apache.http.conn.scheme.Scheme;
importorg.apache.http.conn.scheme.SchemeRegistry;
importorg.apache.http.conn.ssl.SSLSocketFactory;
importorg.apache.http.impl.client.DefaultHttpClient;
//用于进行Https请求的HttpClient
{
publicSSLClient()throwsException{
super();
SSLContextctx=SSLContext.getInstance("TLS");
X509TrustManagertm=newX509TrustManager(){
@Override
publicvoidcheckClientTrusted(X509Certificate[]chain,
StringauthType)throwsCertificateException{
}
@Override
publicvoidcheckServerTrusted(X509Certificate[]chain,
StringauthType)throwsCertificateException{
}
@Override
publicX509Certificate[]getAcceptedIssuers(){
returnnull;
}
};
ctx.init(null,newTrustManager[]{tm},null);
SSLSocketFactoryssf=newSSLSocketFactory(ctx,SSLSocketFactory.ALLOW_ALL_HOSTNAME_VERIFIER);
ClientConnectionManagerccm=this.getConnectionManager();
SchemeRegistrysr=ccm.getSchemeRegistry();
sr.register(newScheme("https",443,ssf));
}
}

HttpClient发送post请求的类

importjava.util.ArrayList;
importjava.util.Iterator;
importjava.util.List;
importjava.util.Map;
importjava.util.Map.Entry;
importorg.apache.http.HttpEntity;
importorg.apache.http.HttpResponse;
importorg.apache.http.NameValuePair;
importorg.apache.http.client.HttpClient;
importorg.apache.http.client.entity.UrlEncodedFormEntity;
importorg.apache.http.client.methods.HttpPost;
importorg.apache.http.message.BasicNameValuePair;
importorg.apache.http.util.EntityUtils;
/*
*利用HttpClient进行post请求的工具
*/
publicclassHttpClientUtil{
publicStringdoPost(Stringurl,Map<String,String>map,Stringcharset){
HttpClienthttpClient=null;
HttpPosthttpPost=null;
Stringresult=null;
try{
httpClient=newSSLClient();
httpPost=newHttpPost(url);
//设置参数
List<NameValuePair>list=newArrayList<NameValuePair>();
Iteratoriterator=map.entrySet().iterator();
while(iterator.hasNext()){
Entry<String,String>elem=(Entry<String,String>)iterator.next();
list.add(newBasicNameValuePair(elem.getKey(),elem.getValue()));
}
if(list.size()>0){
UrlEncodedFormEntityentity=newUrlEncodedFormEntity(list,charset);
httpPost.setEntity(entity);
}
HttpResponseresponse=httpClient.execute(httpPost);
if(response!=null){
HttpEntityresEntity=response.getEntity();
if(resEntity!=null){
result=EntityUtils.toString(resEntity,charset);
}
}
}catch(Exceptionex){
ex.printStackTrace();
}
returnresult;
}
}

测试代码

importjava.util.HashMap;
importjava.util.Map;
//对接口进行测试
publicclassTestMain{
privateStringurl="https://192.168.1.101/";
privateStringcharset="utf-8";
=null;

publicTestMain(){
httpClientUtil=newHttpClientUtil();
}

publicvoidtest(){
StringhttpOrgCreateTest=url+"httpOrg/create";
Map<String,String>createMap=newHashMap<String,String>();
createMap.put("authuser","*****");
createMap.put("authpass","*****");
createMap.put("orgkey","****");
createMap.put("orgname","****");
StringhttpOrgCreateTestRtn=httpClientUtil.doPost(httpOrgCreateTest,createMap,charset);
System.out.println("result:"+httpOrgCreateTestRtn);
}

publicstaticvoidmain(String[]args){
TestMainmain=newTestMain();
main.test();
}
}

Ⅳ 通过SSLSocket创建支持HTTPS安全通信的客户程序

本文介绍如何通过Java安全套接字扩展(jsSE)创建支持HTTPS安全通信的客户程序,旨在为Java网络应用程序提供安全解决方案。

JSSE是Java API的一部分,它为基于SSL和TLS协议的Java应用程序提供了封装,简化了安全通信的实现。JSSE支持数据加密、身份验证、数据完整性等功能,并简化了开发人员的编码工作。

核心类SSLServerSocket和SSLSocket继承自Socket和ServerSocket,SSLSocket对象由SSLSocketFactory创建。SSLServerSocket对象由SSLServerSocketFactory创建,两者都由SSLContext创建。这些类共同构成了安全通信的基础。

例程1展示了一个名为HTTPSClient的类,该类创建了一个SSLSocket对象以实现HTTPS通信。运行此程序连接到使用SSL协议的alipay.com网站,发送HTTP请求,并接收响应结果。

使用SSL协议进行通信会显著减缓速度,因为SSL握手需要生成和交换密钥,并在数据传输过程中进行加密和解密,这些操作对CPU和网络资源造成较大开销。因此,SSL协议应仅用于需要保密的通信过程。

当SSLSocketFactory的createSocket()方法创建SSLSocket对象时,仅建立了一个普通的TCP连接,SSL握手尚未开始。当双方中任一方尝试通过调用getOutputStream()或getInputStream()方法发送或接收数据时,SSL握手开始。此过程利用已建立的TCP连接交换密钥、身份认证信息等。

Ⅳ 用java做一个httpClient 发送https 的get请求,需要证书验证的那种,求大神指点一下!

你那个 SSLSocketFactory(ks) 是自己的类?

你有用过 KeyManager.init (...)? 和 TrustManager.init(...) ?

想要在连接建立过程上交互式的弹出确认对话框来的话回需要我们自己答提供一个 KeyManager 和 TrustManager 的实现类,这有点复杂,你可以看一个 Sun 的 X509KeyManager 是怎么做的,默认地情况下它是从自动搜索匹配的 subject ,我们需要用自己提供的方式弹出确认的过程还不是全自动,另外一个账户可能有多个数字证书,比如支付宝我们就有多个签发时间不一样的数字证书,在连接建立时 IE 会提示我们选择其中的一个来使用,银行的 U 盾在安装多张数字证书时也会提示我们选择其中一个对应到你正在使用的银行卡号的那张证书。

Ⅵ JAVA怎样调用https类型的webservice

1.打开webService链接,右键属性—》证书—》详细信息—》复制到文件,保存cer格式的文件。

2. 复制下面的cmd命令,执行keytool命令,生成keystore文件,例如
c:\nciic.keystore

keytool -import -alias nciic -file c:\jswszx.cer -keystore c:\nciic.keystore

它会提示输入密码,随便输入,例如:123456,回车
4.他会提示是否信任这个认证,输入Y,回车,指定目录下就会生成nciic.keystore文件

它会提示输入密码,随便输入,例如:123456,回车
4.他会提示是否信任这个认证,输入Y,回车,指定目录下就会生成nciic.keystore文件

5.修改Java代码
在调用接口方法之前,添加如下代码:
System.setProperty("javax.NET.ssl.trustStore","c://nciic.keystore"); System.setProperty("java.protocol.handler.pkgs","com.sun.Net.ssl.internal.www.protocol");
java.security.Security.addProvider(new com.sun.net.ssl.internal.ssl.Provider());

Ⅶ java中socket5 怎么判断是https请求

从客户端发送请求,可以通过ajax进行判断,当发送请求时,通过XMLHttpRequest对象的实例的status属性返回编码的值进行判断,如404表示没有知道页面或是客户端url错误,5开头表示服务器端错误,200表示成功,等等。

通过业务逻辑发送请求可以通过httpClient发送请求,可以通过类似上面的返回编码进行判断,然后做不同的处理。

阅读全文

与sockethttpsjava相关的资料

热点内容
ug编程怎么升职 浏览:169
基站查询app哪个好 浏览:282
天龙八部升级御兽价格 浏览:219
离草文件夹 浏览:708
怎么压缩一个文件夹 浏览:404
共享设置用户名和密码 浏览:746
js中表示数组的长度 浏览:961
怎样在电脑中找到视频的文件 浏览:719
孩子编程买什么教材 浏览:500
安卓50卡不卡 浏览:621
移动免流app哪个好 浏览:50
u盘拔了进不了硬盘文件丢失 浏览:527
usb数据线为什么会松动 浏览:152
wav文件不能播放 浏览:241
qq怎么找附近的人 浏览:266
怎么样才能把编程学好 浏览:927
js如何保留整数部分 浏览:956
苹果6怎么滑动解锁 浏览:619
讨论网络营销岗位有哪些 浏览:292
三星c7pro移动版本 浏览:645

友情链接