具体如下:
//1----建立连接
URL url = new URL("https://a.com/download.cer?cmd=b;type=c;key=4");
HttpsURLConnection connection = (HttpsURLConnection) url.openConnection();
//2----得到输入流
DataInputStream dis = new DataInputStream(connection.getInputStream());
//3-----生成证书实体可以得到主体名
Certificate cert = cf.generateCertificate(dis);
X509Certificate t = (X509Certificate) cert;
System.out.println("主体名:" + t.getSubjectDN());
//4------得到证书文件流
ByteArrayOutputStream baos = new ByteArrayOutputStream();
int count;
byte[] buffer = new byte[1024];
//根本进入不了循环,难道和3冲突?
while ((count = dis.read(buffer)) != -1) {
System.out.println("is coming in?");
baos.write(buffer, 0, count);
}
后来发现,注释掉3就不会冲突,但是如果向ByteArrayOutputStream 实例写完字节流 调用toByteArray()打印得到的字节数组,是一堆数字,我想得到如
-----BEGIN CERTIFICATE-----
98G2jBdkRR6jTBuV3FnVPcpwrddkGyrDY7lJMLFCIERcpuUvGfW12xKURYMLzHzy
zD/xDfg25KqJG82UKG+UgRpOfWhY5nLDb1uzzaXsBNN/CCMzDZ3f+CpTOyFMDnB6
kU7mwOD/6nwVS3Cf6OZi8r+Hm46WnNT6oGDEXbIaQCrGUGz87bJiuCWhrgDkYXqv
2RF0QMQkvebaHjDz17uacg==
-----END CERTIFICATE-----
的结果,应该怎么处理
请高手指教,谢谢啦
6 个解决方案
#1
关注
#2
关注并学习中
#3
能不能反代码给的再全一些?
#4
没向证书写过流,帮不到你了咯~
#5
简单啦,数据已经取得了,你把ByteArrayOutputStream baos 中的baos转换成String就行了.
String str = new String(baos.toByteArray());
System.out.println(str);
String str = new String(baos.toByteArray());
System.out.println(str);
#6
Certificate cert = cf.generateCertificate(dis);
===
这一句已经把数据读完了,输入流指针已经移到末尾,4当然读不到数据了
===
这一句已经把数据读完了,输入流指针已经移到末尾,4当然读不到数据了
#1
关注
#2
关注并学习中
#3
能不能反代码给的再全一些?
#4
没向证书写过流,帮不到你了咯~
#5
简单啦,数据已经取得了,你把ByteArrayOutputStream baos 中的baos转换成String就行了.
String str = new String(baos.toByteArray());
System.out.println(str);
String str = new String(baos.toByteArray());
System.out.println(str);
#6
Certificate cert = cf.generateCertificate(dis);
===
这一句已经把数据读完了,输入流指针已经移到末尾,4当然读不到数据了
===
这一句已经把数据读完了,输入流指针已经移到末尾,4当然读不到数据了