如何使用FileInputStream --Android打开* .cer文件

时间:2016-12-15 14:43:30

标签: android ssl certificate android-resources

此时我正在尝试向Keystore添加一些证书,因为我需要Okthpp接受此证书。

所以,在开发者android中,我看到了这个例子:https://developer.android.com/training/articles/security-ssl.html?hl=es#HttpsExample

在示例中,他们这样做:

// Load CAs from an InputStream
// (could be from a resource or ByteArrayInputStream or ...)
CertificateFactory cf = CertificateFactory.getInstance("X.509");
// From https://www.washington.edu/itconnect/security/ca/load-der.crt
InputStream caInput = new BufferedInputStream(new FileInputStream("load-der.crt"));
Certificate ca;

我所做的是尝试从我添加到项目结构中的.../res/raw/xxxxx*cer文件中加载证书。

所以我的代码如下:

CertificateFactory cf = CertificateFactory.getInstance("X.509");
caInput1 = new BufferedInputStream(new FileInputStream(String.valueOf(ctx.getResources().openRawResourceFd(R.raw.xxxx))));

但是当我尝试它时,它不起作用:

enter image description here

我该如何解决?或者不可能?

1 个答案:

答案 0 :(得分:0)

openRawResourceFd(R.raw.xxxx)失败了这种文件,有人提到它:

  

此功能仅适用于存储在包中的资源        *作为未压缩数据,通常包括mp3文件之类的东西        *和png图片。

然而你可以使用

InputStream is = ctx.getResources().openRawResource(R.raw.xxxx);

这并不是必须使用FileInputStream,但是你直接得到它的InputStream。