中易网

如何用JAVA实现HTTPS客户端

答案:2  悬赏:30  
解决时间 2021-03-15 10:42
如何不依赖第三方库,用JAVA实现一个HTTPS客户端,给出URL和端口号,便可发送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);
}
}
全部回答
对于不是优盘的ukey,一般都有驱动程序的。用正确的api就可以不导入直接使用。
我要举报
如以上问答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
请教浪琴l27984726和l26734783哪款好些?另l2
汉釜宫自助烤肉火锅锦绣东方店地址有知道的么
我的显示器是16:9的,但是XP系统里没这个分
数学5年级下册同步69页
带凯字的名字能给意见吗
电商平台要如何建立呢????
宁家冲地址有知道的么?有点事想过去
放眼看世界的第一人是谁?
上几年有个做生意赔了的朋友,她有一尊财神没
移动有一个十元十个g
南京路中学好不好
栖霞寺地址在哪,我要去那里办事
一个正方体的棱长是8分米,它的棱长总和是多
高新区纬三路紫金城小区的房子是不是小产权
老高羊杂碎地址有知道的么?有点事想过去
推荐资讯
升级windows8时总是提示此时不能联网,可我的
天天新空气NO.002地址有知道的么?有点事想过
女朋友的家人住院了,去看过一次了,还用在去
第一味农家菜地址在什么地方,想过去办事
办理二手房过户委托公证书要几份
重庆涪陵退休人员7月份养老金为什么还没有发
父进程以外退出,怎么关闭子进程
玉树这种植物要怎么照料?
利用下述数据计算宾馆房间的需求价格弹性:
北京坐地铁怎么去北京南站
小孩在公园湖中淹死,公园有责任吗
六爻:天水讼变离为火,问感情,结果怎样 ?
手机登qq时,显示手机磁盘不足,清理后重新登
刺客的套装怎么选啊?